马蒂莫阿帕沼泽保护区泥炭地鸟瞰图, 芬兰 (© romikatarina/Shutterstock)

Welcom to 评论 - lizhenqiu blog!

    #115

    作者:广西南宁市
    package main // 打开系统默认浏览器 import ( "fmt" "os/exec" "runtime" ) var commands = map[string]string{ "windows": "start", "darwin": "open", "linux": "xdg-open", } func Open(uri string) error { run, ok := commands[runtime.GOOS] if !ok { return fmt.Errorf("don't know how to open things on %s platform", runtime.GOOS) } cmd := exec.Command(run, uri) return cmd.Start() } func main() { Open("http://baidu.com") }
    Run code
    Cut to clipboard
      文章:Golang版更换windows壁纸  发表时间:2023-04-15, 00:57:52  
      展开↯

      #116

      作者:广西南宁市
      golang里跳转到其他网页
      package main import ( "github.com/labstack/echo" "net/http" ) func HandleWelcome() func(c echo.Context) error { return func(c echo.Context) error { res := c.Response() w := res.Writer r := c.Request() http.Redirect(w, r, "http://www.baidu.com", http.StatusFound) //跳转到百度 return nil } } func main() { e := echo.New() e.GET("/", HandleWelcome()) e.Logger.Fatal(e.Start(":1323")) }
      Run code
      Cut to clipboard
        文章:Golang版更换windows壁纸  发表时间:2023-04-15, 00:57:13  
        展开↯

        #117

        作者:广西南宁市
        pickerOptions: { shortcuts: [ { text: '今日', onClick(picker) { const end = new Date(); const start = new Date(); // start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); picker.$emit('pick', [start, end]); } }, { text: '昨 天', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 1); end.setTime(end.getTime() - 3600 * 1000 * 24 * 1); picker.$emit('pick', [start, end]); } }, { text: '前 天', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 2); end.setTime(end.getTime() - 3600 * 1000 * 24 * 2); picker.$emit('pick', [start, end]); } }, { text: '大前天', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 3); end.setTime(end.getTime() - 3600 * 1000 * 24 * 3); picker.$emit('pick', [start, end]); } }, { text: '本周', onClick(picker) { let now = new Date(); //当前日期 let nowDayOfWeek = now.getDay(); //今天本周的第几天 let nowDay = now.getDate(); //当前日 let nowMonth = now.getMonth(); //当前月 let nowYear = now.getFullYear(); //当前年 const start = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek) const end = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek)) start.setTime(start.getTime() + 3600 * 1000 * 24 * 1); end.setTime(end.getTime() + 3600 * 1000 * 24 * 1); picker.$emit('pick', [start, end]); } }, { text: '上 周', onClick(picker) { let now = new Date(); //当前日期 let nowDayOfWeek = now.getDay(); //今天本周的第几天 let nowDay = now.getDate(); //当前日 let nowMonth = now.getMonth(); //当前月 let nowYear = now.getFullYear(); //当前年 const start = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek) const end = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek)) start.setTime(start.getTime() + 3600 * 1000 * 24 * 1 - 3600 * 1000 * 24 * 7); end.setTime(end.getTime() + 3600 * 1000 * 24 * 1 - 3600 * 1000 * 24 * 7); picker.$emit('pick', [start, end]); } }, { text: '本月', onClick(picker) { let now = new Date(); //当前日期 // var nowDayOfWeek = now.getDay(); //今天本周的第几天 // var nowDay = now.getDate(); //当前日 let nowMonth = now.getMonth(); //当前月 let nowYear = now.getFullYear(); //当前年 const start = new Date(nowYear, nowMonth, 1) const end = new Date(nowYear, nowMonth + 1, 0) start.setTime(start.getTime() + 3600 * 1000 * 24 * 0); end.setTime(end.getTime() + 3600 * 1000 * 24 * 0); picker.$emit('pick', [start, end]); } }, { text: '上个月', onClick(picker) { let now = new Date(); //当前日期 // var nowDayOfWeek = now.getDay(); //今天本周的第几天 // var nowDay = now.getDate(); //当前日 let nowMonth = now.getMonth(); //当前月 let nowYear = now.getFullYear(); //当前年 const start = new Date(nowYear, nowMonth-1, 1) const end = new Date(nowYear, nowMonth, 1) start.setTime(start.getTime() + 3600 * 1000 * 24 * 0); end.setTime(end.getTime() -1 + 3600 * 1000 * 24 * 0); picker.$emit('pick', [start, end]); } }, { text: '上个季度', onClick(picker) { let now = new Date(); //当前日期 // var nowDayOfWeek = now.getDay(); //今天本周的第几天 // var nowDay = now.getDate(); //当前日 let nowMonth = now.getMonth(); //当前月 let nowYear = now.getFullYear(); //当前年 let jd=Math.ceil((nowMonth + 1) / 3)-1; const start = new Date(nowYear, (jd-1)*3, 1) const end = new Date(nowYear, jd*3, 0) start.setTime(start.getTime() + 3600 * 1000 * 24 * 0); end.setTime(end.getTime() + 3600 * 1000 * 24 * 0); picker.$emit('pick', [start, end]); } }, { text: '本季度', onClick(picker) { let now = new Date(); //当前日期 // var nowDayOfWeek = now.getDay(); //今天本周的第几天 // var nowDay = now.getDate(); //当前日 let nowMonth = now.getMonth(); //当前月 let nowYear = now.getFullYear(); //当前年 let jd=Math.ceil((nowMonth + 1) / 3); const start = new Date(nowYear, (jd-1)*3, 1) const end = new Date(nowYear, jd*3, 0) start.setTime(start.getTime() + 3600 * 1000 * 24 * 0); end.setTime(end.getTime() + 3600 * 1000 * 24 * 0); picker.$emit('pick', [start, end]); } }, { text: '最近一周', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); picker.$emit('pick', [start, end]); } }, { text: '最近一个月', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); picker.$emit('pick', [start, end]); } }, { text: '最近三个月', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); picker.$emit('pick', [start, end]); } }], disabledDate:(dd_date_time)=> { return dd_date_time.getTime() > new Date().getTime(); } },
        Run code
        Cut to clipboard
          文章:js获取本周、本月、本季度、本年开始,结束时间  发表时间:2023-04-07, 14:36:08  
          展开↯

          #118

          作者:广西南宁市
          go mod init 新模块名字
          Run code
          Cut to clipboard

            go get -u github.com/gin-gonic/gin
            Run code
            Cut to clipboard
              文章:Golang版更换windows壁纸  发表时间:2023-04-07, 14:28:23  
              展开↯

              #119

              作者:广西南宁市
              package main import ( "encoding/binary" "flag" "fmt" "log" "net" "runtime" "time" "github.com/gogf/gf/os/glog" "github.com/gogf/gf/os/gproc" "github.com/gogf/gf/text/gstr" "github.com/lxn/walk" ) const ntpEpochOffset = 2208988800 type packet struct { Settings uint8 Stratum uint8 Poll int8 Precision int8 RootDelay uint32 RootDispersion uint32 ReferenceID uint32 RefTimeSec uint32 RefTimeFrac uint32 OrigTimeSec uint32 OrigTimeFrac uint32 RxTimeSec uint32 RxTimeFrac uint32 TxTimeSec uint32 TxTimeFrac uint32 } func main() { var timeLayoutStr = "2006-01-02 15:04:05" ntime := getremotetime() ts := ntime.Format(timeLayoutStr) //time转string fmt.Print(ts) // 2021-08-29 15:53:35.922579627 +0800 CST UpdateSystemDate(ts) } func getremotetime() time.Time { var host string // 182.92.12.11:123 是阿里的ntp服务器,可以换成其他域名的 flag.StringVar(&host, "e", "ntp.aliyun.com:123", "NTP host") flag.Parse() conn, err := net.Dial("udp", host) if err != nil { log.Fatalf("failed to connect: %v", err) } defer conn.Close() if err := conn.SetDeadline(time.Now().Add(15 * time.Second)); err != nil { log.Fatalf("failed to set deadline: %v", err) } req := &packet{Settings: 0x1B} if err := binary.Write(conn, binary.BigEndian, req); err != nil { log.Fatalf("failed to send request: %v", err) } rsp := &packet{} if err := binary.Read(conn, binary.BigEndian, rsp); err != nil { log.Fatalf("failed to read server response: %v", err) } secs := float64(rsp.TxTimeSec) - ntpEpochOffset nanos := (int64(rsp.TxTimeFrac) * 1e9) >> 32 showtime := time.Unix(int64(secs), nanos) return showtime } func UpdateSystemDate(dateTime string) bool { system := runtime.GOOS switch system { case "windows": { _, err1 := gproc.ShellExec(`date ` + gstr.Split(dateTime, " ")[0]) _, err2 := gproc.ShellExec(`time ` + gstr.Split(dateTime, " ")[1]) if err1 != nil && err2 != nil { glog.Info("更新系统时间错误:请用管理员身份启动程序!") walk.MsgBox(nil, "出错啦!!!", "更新系统时间错误,请右键,选择以管理员身份运行程序!", walk.MsgBoxIconInformation) return false } return true } case "linux": { _, err1 := gproc.ShellExec(`date -s "` + dateTime + `"`) if err1 != nil { glog.Info("更新系统时间错误:", err1.Error()) return false } return true } case "darwin": { _, err1 := gproc.ShellExec(`date -s "` + dateTime + `"`) if err1 != nil { glog.Info("更新系统时间错误:", err1.Error()) return false } return true } } return false }
              Run code
              Cut to clipboard
                文章:golang 获取NTP服务器时间并自动设置  发表时间:2023-03-31, 02:55:45  
                展开↯

                #120

                作者:广西南宁市
                go 修改操作系统时间 https://www.cnblogs.com/Kingram/p/12627709.html go 作为 ntp 客户端接收时间 https://github.com/vladimirvivien/go-ntp-client/blob/master/time.go 时间格式化 https://www.cnblogs.com/-xuzhankun/p/10812048.html package main import ( "encoding/binary" "flag" "fmt" "log" "net" "runtime" "time" "github.com/gogf/gf/os/glog" "github.com/gogf/gf/os/gproc" "github.com/gogf/gf/text/gstr" ) const ntpEpochOffset = 2208988800 type packet struct { Settings uint8 Stratum uint8 Poll int8 Precision int8 RootDelay uint32 RootDispersion uint32 ReferenceID uint32 RefTimeSec uint32 RefTimeFrac uint32 OrigTimeSec uint32 OrigTimeFrac uint32 RxTimeSec uint32 RxTimeFrac uint32 TxTimeSec uint32 TxTimeFrac uint32 } func main() { var timeLayoutStr = "2006-01-02 15:04:05" ntime := getremotetime() ts := ntime.Format(timeLayoutStr) //time转string fmt.Print(ts) // 2021-08-29 15:53:35.922579627 +0800 CST UpdateSystemDate(ts) } func getremotetime() time.Time { var host string // 182.92.12.11:123 是阿里的ntp服务器,可以换成其他域名的 flag.StringVar(&host, "e", "time.windows.com:123", "NTP host") flag.Parse() conn, err := net.Dial("udp", host) if err != nil { log.Fatalf("failed to connect: %v", err) } defer conn.Close() if err := conn.SetDeadline(time.Now().Add(15 * time.Second)); err != nil { log.Fatalf("failed to set deadline: %v", err) } req := &packet{Settings: 0x1B} if err := binary.Write(conn, binary.BigEndian, req); err != nil { log.Fatalf("failed to send request: %v", err) } rsp := &packet{} if err := binary.Read(conn, binary.BigEndian, rsp); err != nil { log.Fatalf("failed to read server response: %v", err) } secs := float64(rsp.TxTimeSec) - ntpEpochOffset nanos := (int64(rsp.TxTimeFrac) * 1e9) >> 32 showtime := time.Unix(int64(secs), nanos) return showtime } func UpdateSystemDate(dateTime string) bool { system := runtime.GOOS switch system { case "windows": { _, err1 := gproc.ShellExec(`date ` + gstr.Split(dateTime, " ")[0]) _, err2 := gproc.ShellExec(`time ` + gstr.Split(dateTime, " ")[1]) if err1 != nil && err2 != nil { glog.Info("更新系统时间错误:请用管理员身份启动程序!") return false } return true } case "linux": { _, err1 := gproc.ShellExec(`date -s "` + dateTime + `"`) if err1 != nil { glog.Info("更新系统时间错误:", err1.Error()) return false } return true } case "darwin": { _, err1 := gproc.ShellExec(`date -s "` + dateTime + `"`) if err1 != nil { glog.Info("更新系统时间错误:", err1.Error()) return false } return true } } return false }
                Run code
                Cut to clipboard
                  文章:golang 获取NTP服务器时间并自动设置  发表时间:2023-03-31, 02:54:28  
                  展开↯

                  #121

                  作者:广西南宁市
                  package main import ( "github.com/gogf/gf/os/glog" "github.com/gogf/gf/os/gproc" "github.com/gogf/gf/text/gstr" "runtime" ) func main() { UpdateSystemDate("2020-03-20 15:02:41.372") } func UpdateSystemDate(dateTime string) bool { system := runtime.GOOS switch system { case "windows": { _, err1 := gproc.ShellExec(`date ` + gstr.Split(dateTime, " ")[0]) _, err2 := gproc.ShellExec(`time ` + gstr.Split(dateTime, " ")[1]) if err1 != nil && err2 != nil { glog.Info("更新系统时间错误:请用管理员身份启动程序!") return false } return true } case "linux": { _, err1 := gproc.ShellExec(`date -s "` + dateTime + `"`) if err1 != nil { glog.Info("更新系统时间错误:", err1.Error()) return false } return true } case "darwin": { _, err1 := gproc.ShellExec(`date -s "` + dateTime + `"`) if err1 != nil { glog.Info("更新系统时间错误:", err1.Error()) return false } return true } } return false }
                  Run code
                  Cut to clipboard
                    文章:golang 获取NTP服务器时间并自动设置  发表时间:2023-03-31, 02:54:07  
                    展开↯

                    #122

                    作者:广西南宁市
                    Golang-设置系统时间
                    // 接收UDP时间广播,并设置系统时间 func (sl *Slaver) masTimeSync(ch chan int) { // 开始监听广播时间 log.Printf("time sync listen [%s]", sl.Node.Port.PortUdpSlaTimeSync) for { (func() { // 监听 mas 发来的同步时间 lis, err := socket.NewListen("", sl.Node.Port.PortUdpSlaTimeSync, 3).ListenUDP() // 判断监听是否建立成功 if err != nil { // 异常抛出 log.Fatalln(err) } // 保证监听正常关闭 defer lis.Close() // 循环接收 for { // 每个时间戳大小不超过32字节 data := make([]byte, 32) // 读取时间戳 read, addr, err := lis.ReadFromUDP(data) // 检查是否接收错误 if err != nil { // 错误时从新接收 continue } // 判断是否为注册服务器所发 if addr != nil && strings.HasPrefix(addr.String(), sl.MasAddr) { // 转换远程时间戳 l, _ := strconv.ParseInt(fmt.Sprintf("%s", data[0:read]), 10, 64) //// 转换时间格式 //time := syscall.NsecToTimeval(l) //// 设置系统时间 "Linux Private Settimeofday" //if err := syscall.Settimeofday(&time); err != nil { // // 异常抛出 // log.Fatalln(err) //} // 设置到系统 cmd := exec.Command("date", "-s", time.Unix(0, l).Format("01/02/2006 15:04:05.999999999")) // 设置 cmd.Run() } } })() } }
                    Run code
                    Cut to clipboard
                      文章:golang 获取NTP服务器时间并自动设置  发表时间:2023-03-31, 02:53:37  
                      展开↯

                      #123

                      作者:广西南宁市
                      访问的地址被防火墙给屏蔽了,你需要改成我们国内可用的代理地址
                      在cmd中输入:
                      go env -w GOPROXY=https://goproxy.cn
                      Run code
                      Cut to clipboard

                        安装GO语言相关插件

                        在vscode中安装GO语言相关插件的时候,报错:

                        A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
                        文章:Go语言捕获fatal错误,程序异常退出,致命错误  发表时间:2023-03-31, 02:52:05  
                        展开↯

                        #124

                        作者:广西南宁市
                        svn access to ...forbidden
                        解决办法清除svn缓存:
                        TortoiseSVN-> Settings -> Saved Data
                        然后clear,
                        主要是最后一个(Authentication data)clear,
                        或者直接clear all
                        #,广西南宁市,2023-02-24,16:37:01, svn命令行提交新增所有修改的文件
                        svn add . --no-ignore --force svn ci -m "提交所有全部文件"
                        Run code
                        Cut to clipboard

                          命令行执行svn ci提交的时候,如果是新增的文件,不会被提交
                          加上svn add命令,即可自动添加新增的文件
                          然后再执行svn ci命令,即可将新增的文件提交到svn
                          #,广西南宁市,2023-02-24,16:37:57, svn配置钩子后,提交代码提示post-commit hook failed (exit code 255) with no output错误
                          post-commit hook failed (exit code 255) with no output.
                          就是我们没有为post-commit赋予执行权限
                          没有x权限,为post-commit添加x权限

                          chmod +x post-commit
                          #,广西南宁市,2023-02-24,16:39:08, svn: line 19: Option expected
                          修改svnserve.conf时,打开注释时,配置的前面有空格,应该顶格写
                          文章:Linux系统中svn服务器设置开机启动  发表时间:2020-07-12, 18:53:24  
                          展开↯

                          #125

                          作者:广西南宁市
                          [mysqld]
                          port=3306

                          log_bin_trust_function_creators=1
                          文章:解决myql Error Code : 1060 Duplicate column name 'xxx' 问题  发表时间:2023-02-20, 00:57:19  
                          展开↯

                          #126

                          作者:广西南宁市
                          [Err] 1060 - Duplicate column name 'XXX'
                          在mysql中,多个表联合查询时,出现错误:[Err] 1060 - Duplicate column name 'XXX'

                          原因:

                          使用的是:select * 操作,造成了列名重复,例如a表里面有列名'content',b表里面也有列名'content',此时就会报错。

                          解决方法:

                          直接指定想要返回的是什么,例如:select a.content 来操作。
                          文章:解决myql Error Code : 1060 Duplicate column name 'xxx' 问题  发表时间:2023-02-20, 00:55:16  
                          展开↯

                          #127

                          作者:广西南宁市
                          css3 实现瀑布流
                          .wrap { margin-top: 50px; width: 100%; padding: 0 20px; /* 瀑布流容器内元素的间隔 */ column-gap:10px; /* 瀑布容器内排列的列数 */ column-count: 2; } .item { padding: 10px; border: 1px solid #000; margin-bottom: 10px; height: 50px; /* avoid避免在主体框中插入任何中断(页面,列或区域) */ break-inside: avoid; }
                          Run code
                          Cut to clipboard
                            #,广西南宁市,2023-01-13,21:05:22, css3瀑布流顶部不对齐,列断裂
                            问题展现

                            找了半天,发现是 item 的 margin-bottom 导致的:第一列的最后一个item的margin-bottom跑到第二列第一个item上面了,改成padding-bottom即可,
                            因为padding属于内容,只要不折断,就不会跑到另一列
                            文章:js判断一个值是否为数字  发表时间:2023-01-13, 17:14:25  
                            展开↯

                            #128

                            作者:广西南宁市
                            微信小程序页面自动滚动到指定位置
                            1.使用wx.createSelectorQuery().select().boundingClientRect()查询到需要滚动到的元素位置 2.使用wx.pageScrollTo()将页面滚动到对应位置
                            Run code
                            Cut to clipboard

                              scrollTo() { // 1.使用wx.createSelectorQuery()查询到需要滚动到的元素位置 wx.createSelectorQuery().select('.bb4').boundingClientRect(res => { // 到这里,我们可以从res中读到class为bb4的top,即离顶部的距离(px) // 2使用wx.pageScrollTo()将页面滚动到对应位置 wx.pageScrollTo({ scrollTop: res.top, // 滚动到的位置(距离顶部 px) duration: 0 //滚动所需时间 如果不需要滚动过渡动画,设为0(ms) }) }).exec() }
                              Run code
                              Cut to clipboard

                                scrollTo() { // 1.使用wx.createSelectorQuery()查询到需要滚动到的元素位置 wx.createSelectorQuery().select('.bb4').boundingClientRect(res => { // 2.使用wx.getSysTemInfo()获取设备及页面高度windowHeight(px) wx.getSystemInfo({ success(ress) { wx.pageScrollTo({ // 3. 滚动的距离根据设备的页面高度进行微调(px) scrollTop: res.top - ress.windowHeight/2 + 50, duration: 200 }) } }) }).exec() }
                                Run code
                                Cut to clipboard
                                  文章:js判断一个值是否为数字  发表时间:2023-01-13, 17:15:28  
                                  展开↯

                                  #129

                                  作者:广西南宁市
                                  JavaScript 判断是否为数字
                                  jquery中$.isNumeric的源码
                                  !isNaN(parseFloat(value)) && isFinite(value);
                                  Run code
                                  Cut to clipboard
                                    文章:js判断一个值是否为数字  发表时间:2023-01-13, 17:13:44  
                                    展开↯

                                    #130

                                    作者:广西南宁市
                                    是 .pem 不是 .pen
                                    文章:腾讯云申请自有证书上传部署到七牛云  发表时间:2022-11-29, 01:08:52  
                                    展开↯

                                    #131

                                    作者:广西南宁市西乡塘区
                                    Thinkphp的 is null 查询条件是什么,
                                    以及exp表达式如何使用

                                    一、总结
                                    一句话总结:$map['name'] = array('exp','is null');
                                    1、is null判断的常见错误写法有哪些?
                                    $map1['f_jieduan_id']=['=',null];
                                    $map1['f_g_id']=['=',null];

                                    2、
                                    $map1['f_jieduan_id']=['is null'];
                                    $map1['f_g_id']=['is null'];

                                    3、
                                    $map['name'] = array('is',null);//无法实现
                                    2、thinkphp中exp表达式如何使用,作用是什么?
                                    其实就是告诉thinkphp这是原生的sql语句

                                    关于exp表达式:
                                    可支持任何sql语法
                                    如:
                                    $map['id'] = array('between',array(1,5));

                                    可写成:
                                    $map['id'] = array('exp','between (1,5)');

                                    还可用于数据更新:
                                    $data['age'] = array('exp','age+1');
                                    M('user')->where('id=1')->save($data);//该用户的年龄加1

                                    二、Thinkphp的 is null 查询条件,以及exp表达式的使用
                                    Thinkphp中若要用到 is null 查询条件,使用以下方法无法实现:

                                    $map['name'] = array('is',null);//无法实现
                                    可使用exp表达式:

                                    $map['name'] = array('exp','is null');
                                    关于exp表达式:
                                    可支持任何sql语法
                                    如:
                                    $map['id'] = array('between',array(1,5));

                                    可写成:
                                    $map['id'] = array('exp','between (1,5)');

                                    还可用于数据更新:
                                    $data['age'] = array('exp','age+1');
                                    M('user')->where('id=1')->save($data);//该用户的年龄加1

                                    参考:Thinkphp的 is null 查询条件,以及exp表达式的使用 - CSDN博客
                                    https://blog.csdn.net/codercwm/article/details/51523963

                                    三、is null判断的常见错误写法
                                    1、
                                    $map1['f_jieduan_id']=['=',null];
                                    $map1['f_g_id']=['=',null];

                                    2、
                                    $map1['f_jieduan_id']=['is null'];
                                    $map1['f_g_id']=['is null'];

                                    3、
                                    $map['name'] = array('is',null);//无法实现

                                    文章:程序员编程常用网页工具集[游戏]  发表时间:2022-11-24, 15:36:10  
                                    展开↯

                                    #132

                                    作者:广西南宁市西乡塘区
                                    Apache ECharts
                                    一个基于 JavaScript 的开源可视化图表库
                                    echarts更新缓存
                                    文章:echarts配置,数据动态更新缓存问题优解  发表时间:2022-11-24, 15:28:31  
                                    展开↯

                                    #133

                                    作者:广西南宁市西乡塘区
                                    windows无法识别 'git' 命令:exec: "git": executable file not found in %PATH%
                                    choco cmd无法识别
                                    windows安装gitea

                                    注册为Windows服务
                                    要注册为Windows服务,首先以Administrator身份运行 cmd,然后执行以下命令:

                                    sc create gitea start= auto binPath= "\"C:\gitea\gitea.exe\" web --config \"C:\gitea\custom\conf\app.ini\""
                                    别忘了将 C:\gitea 替换成你的 Gitea 安装目录。

                                    之后在控制面板打开 “Windows Services”,搜索 “gitea”,右键选择 “Run”。在浏览器打开 http://localhost:3000 就可以访问了。(如果你修改了端口,请访问对应的端口,3000是默认端口)。

                                    从Windows服务中删除
                                    以Administrator身份运行 cmd,然后执行以下命令:

                                    sc delete gitea
                                    文章:gitea git executable not found  发表时间:2022-11-24, 15:16:30  
                                    展开↯
                                    你好,残忍屏蔽广告

                                    确定要清除编辑框内容吗?

                                    该删除操作将不可恢复。

                                    删除 取消

                                    激活Windows

                                    转到"设置"以激活Windows。