精华内容
下载资源
问答
  • 我现在对CXF拦截器缓存有疑问: 1.拦截器用的CXF自身的拦截器,将日志输出到指定的路径; 2.场景了一个Demo程序,很小。 3.自己调用一次有了日志文件,但是日志文件里无内容?...若是清空缓存,在哪里清空比较好
  • 但是很快,公司附近出现了一些病例,微信各种转发聊天记录,说:“哪里哪里确诊了”,说:“在哪里看到穿防护服的人了”,顿时人心惶惶,口罩,酒精等物质被疯狂抢购。1月21号我离开了深圳回了老家,回去过年,不,...

    2020年即将结束,在12月31日,最后一天,做个不太晚的年度总结吧,也做一次记录。

    1月份 

    武汉的疫情爆发,全国关注。深圳很快也有了第一例,因为离得比较远,大家一开始还不太在意没带口罩啥的,继续写需求,正常上下班。但是很快,公司附近出现了一些病例,微信各种转发聊天记录,说:“哪里哪里确诊了”,说:“在哪里看到穿防护服的人了”,顿时人心惶惶,口罩,酒精等物质被疯狂抢购。1月21号我离开了深圳回了老家,回去过年,不,回去隔离。这个春节真的没怎么出过门,每天关注着疫情确诊的数量。宅在家都做啥呢,看电视剧打游戏,没怎么学习!!

    2月份

    2月3号下午被通知要开始在家办公了。准备了环境什么的,然后第二天开始写需求。在家办公,我们是要用电脑签到的,然后每周开两次会汇报情况,每天写日报。还是要做事的,不然没啥可以写。其实在家上班,敲代码的效率还挺高的。2月份开始接触落地页模板项目。主要就是写一些配置项,让用户自己去配置H5界面,导师写了一个落地页广告的组件,而我的任务则是开发一个模板,让这些组件可以拼接,来批量生产落地页。不得不说腾讯的人脑瓜子真的是厉害,我是怎么都想不出来这样的东西的。而至于技术,我觉得自己还是有提升的,就是提升不太明显。

    2月16号回到深圳,拼的顺风车,在进深圳的时候要填申报,每个人测体温,进关堵了很久。2月17号在租房上班,自我隔离14天。在租房没有在家舒适,然后自己划水也比较多一些,上班签入调个闹钟,签入后继续睡会,电脑开着听信息声,怕有人找。

    那时候接到一个需求,需要重构一个重要的业务的代码,需要重新划分模块,写成不同的组件,然而我完成的很不好,以至于后面还要他们再重构一遍。所以我觉得我的技术还是没啥提升(划水快乐,但并不会催人成长),但是开始知道自己的一些不足。

    3月份

    已经回到工位,星期一二三在公司,星期四五在家。不能随便去找人聊天,也不敢随便去哪里。三月中深圳的疫情基本被控制住,只有零零散散的一两例,所以大家也比较放松一些。

    这时候我们开始做视频广告素材批量制作的业务。

    大概流程就是:

    • 算法同学从不同的地方拉取视频素材,入到原始素材库
    • 用户在我们的平台上选取这些视频素材,按照一定的规则,生成批量制作任务
    • 生成任务的同时,在node端请求另外一个服务进行视频制作
    • 视频制作完成后,回调到我们的node端,将视频链接存下,同步任务状态,直至视频制作完成,成为一个视频广告创意
    • 成为创意之后可以关联落地页,再由用户确认,之后同步到投放端,进行广告投放

    业务难点:

    • 视频拼接规则比较多,前端细节多
    • 原始素材突破百万,查询接口很慢
    • 视频制作接口联调,在本地无法调通,调通后会有一系列的问题(比如:没有回调,回调很慢,制作失败但是没有失败原因)
    • 任务状态管理(制作视频的同时需要制作封面),批量的制作需要实时更新每个任务的状态,再更新总任务的状态

    总体上是完成了,后来还是再优化了一波

    4月份

    这个月又一次搬座位,搬到了全都是外包的NDC场地,觉得自己没有管束,容易变懒。还是喜欢和正式一起办公。

    这个月做的业务主要是持续性任务。

    大概就是将图文和视频的制作跑成一个自动执行的任务,固定一段时间跑一次。

    大概流程:

    • 用户填写任务规则
    • node端每隔一段时间筛选需要执行的任务
    • 执行任务,按照规则筛选、制作素材、关联落地页、确认方案等
    • 制作完成后更新状态

    业务难点:

    • 筛选规则
    • 自动制作
    • 调试麻烦

    这个业务后面还是优化了很多次,持续任务确实省了不少人工,使得制作,投放都可以自动化。

    5月份

    计划开始找工作的,所以一直在看面试题,和刷一些工作岗位。那会很想去富途,刷了不少富途的面经。然后做了一个简历,但一直没有投,因为觉得自己还是没准备好,一直到现在都没有投过一份简历,准备21年3月份正式开始。

    6月份

    整个中心开始优化代码提交流程,增加CodeReview流程

    • 开发流程
      • 建需求单(产品或者自己建)
      • 需求评审(外包的我没怎么参加过需求评审)
      • 排期(一般组长排期)
      • 根据需求单编号创建代码分支
      • 开发
      • 提交至测试分支
      • 小需求产品验收或者自测,大的需求一般需要提测给测试组
      • 修bug
      • 再次验收
      • 检查代码 提交merge request
      • 等待其他人进行code review
      • 通过后合并到master
      • 发布

    还增加了代码规范,中心会给每个项目打分,按照目前标准低于95分都要改。我们给每个项目加了eslint,然后用fix工具处理一些基本的缩进,分号的问题。其他问题还得一点点去改。

    7月份

    开始评选调级员工,我们中心就一个,我落选了,但是后面有加薪资,就没有想离职了。打算做到明年初吧。找工作好麻烦,但这次打算多面几家,到时候再出一些面经。

    8月份

    过了把面试官的瘾,然后觉得收获还是挺多的,不拖沓,不懂不要装,简单明了回答更好,不要自己扩展太多,让面试官问了才答。

    9月份

    开始打王者了,中午打,晚上打,真的是有点颓废的,总有那么一段时间不想努力了!

    10月份

    10月份,一个朋友入职了富途,也是前端,他才一年经验,拿了20K*14真的挺羡慕的。他坚持刷了200多天leedcode。我还是差了些,自己并没有很坚持去做一些事情。

    11月份

    看了些工作,很想进JD,在宝安中心,刷了挺多面经 后面看到一篇讲到了52原则(5年最多换两份工作),就觉得自己的简历太不好看了

    • 我的简历
      • 广州一年(前端+儿童JS编程讲师)因为想做真正的前端,所以离开
      • 广州九个月(医院网站维护与开发)离开原因因为换城市,想去深圳
      • 深圳三个月(水质监测系统开发)离开原因,不喜欢公司制度,氛围太沉闷,工资也不高
      • 深圳一年半至今(腾讯前端外包)离开原因将会是 外包不能接触到更多的业务和技术细节,没有晋升没有绩效,没有未来的感觉。
      • 总结自己的简历三年半四份工作,真的有点频繁了,所以找工作要谨慎,以免留下不好的记录,跳槽也不能随便跳。而且我最近的一份工作还是外包,这经历真的不是很“体面”,有些企业招聘描述上会写上:最近一份不能是外包,点名shopee 又一次悲伤。

    12月份

    还是要静下心,不用学很多,我这个月乖乖的再重新看一遍红宝书,基础基础基础继续补。

    2020年总结

    感谢祖国,感谢奋斗在前线的抗疫战士,让我们可以安心的工作与生活。2020年注定是难忘的一年。这一年我还是不够努力,不够认真,不配说自己是一个上进的人,不配说自己也曾有过梦想。

    2021年Flag

    认真,努力。

    熟读6本技术书:红宝书,es6入门,你不知道的JS,图解http/ip,另外两本待定。

    写12篇工作日志

    写24篇技术专题博客

    立flag时真爽

    最后,祝大家新年快乐,2021年,暴富哈哈!

     

     

    展开全文
  • global中捕获异常

    2015-10-09 21:08:00
    前言:由于现在日志非常重要,但是在哪里写日志比较好呢,我选择的是在global中,把错误代码网上抛,而不是在底层写大量的try catch然后在catch中来写日志,每个catch中的写日志这样就会避免了很多重复代码。...

      前言:由于现在日志非常重要,但是在哪里打写日志比较好呢,我选择的是在global中,把错误代码网上抛,而不是在底层写大量的try catch然后在catch中来写日志,每个catch中的写日志这样就会避免了很多重复代码。当然这是目前我们采取的一个方法,大家可以提出更好地方法来管理日志,下面我开始写代码

    第一步:尽量抛弃项目中try catch。看下代码

    private void ExceptionTestOne()
            {           
                    int a = 1;
                    int b = 0;
                    int c = a/b;                
            }

    上面代码会抛一个异常

    第二步:如果项目中必须用try catch怎么办,因为有时候连接wcf的时候如果出现异常时候我们需要关闭连接避免堵塞,那么我们就采取抛异常的方法

    private void ExceptionTestTwo()
            {
                try
                {
                    List<Simple> simples = null;
                    simples.Add(new Simple() { Name = "发生异常" });
                }
                catch (Exception ex)
                {                
                    throw new Exception("",ex);
                }        
            }

    第三步:我们新建一个global.asax 在Application_Error中把异常信息加入队列中 如下

     //创建一个静态的队列记录把异常都放在队列中
     private static Queue<Exception> queue = new Queue<Exception>();
    
     protected void Application_Error(object sender, EventArgs e)
             {
                Exception exp = Server.GetLastError();
                if (exp != null) {
                    queue.Enqueue(exp);
                }
    
                Server.ClearError();
            }

    第四步:异常信息加入日志(这里为了简单就写入txt文本中了)

    protected void Application_Start(object sender, EventArgs e) {
                ThreadPool.QueueUserWorkItem(a => {
                    while (true) {
                        try {
                            if (queue.Count > 0) {
                                Exception ex = queue.Dequeue();
                                WriteLog(ex);
                            }
                            else {
                                System.Threading.Thread.Sleep(TimeSpan.FromSeconds(3));
                            }
                        }
                        catch (Exception ex) {
                        WriteLog(ex);

    } } }); }
        private void WriteLog(Exception ex)
            {
                if (!File.Exists(@"E:\C#系列\ExceptionDealWith\ExceptionDealWith\Log.txt")) {
                    FileStream fs1 = new FileStream(@"E:\C#系列\ExceptionDealWith\ExceptionDealWith\Log.txt", FileMode.Create, FileAccess.Write);//创建写入文件 
                    StreamWriter sw = new StreamWriter(fs1);
                    sw.WriteLine(ex.Message);//开始写入值
                    sw.Close();
                    fs1.Close();
                }
                else
                {
                    StreamWriter sr = File.AppendText(@"E:\C#系列\ExceptionDealWith\ExceptionDealWith\Log.txt");    
                    sr.WriteLine(ex.Message);
                    sr.Close();                
                }
            }

    当然接入错误信息你可以多定义几个比喻ip地址,堆栈信息错误等基本就是这么多了。这是基本思路。有日志了我就就可以根据时间,ip等进行查询日志日志信息

     下载

    转载于:https://www.cnblogs.com/LipeiNet/p/4865135.html

    展开全文
  • 这次的题目依旧是贪心类别的,但是比较郁闷的是,没能最终出AC的算法来,实在检查不出问题出在哪里,放一段时间再看吧。 各位在看我日志的大牛,如果您有一丢丢小空余时间,然后,又觉得没有什么具体的事情做,...

    题目网址:http://wikioi.com/problem/2079/

    这次的题目依旧是贪心类别的,但是比较郁闷的是,没能最终写出AC的算法来,实在检查不出问题出在哪里,放一段时间再看吧。

    各位在看我日志的大牛,如果您有一丢丢小空余时间,然后,又觉得没有什么具体的事情好做,想要轻松一下,放松一下大脑的话,麻烦帮忙看一下是哪里的问题吧。

    在OJ验证的话,只能通过一半的数据。

    检查过排序算法,检查了最后数据的处理,应该没有越界的情况,我也实在想不出有什么诡异的数据来测试了。

    代码里面有比较详细的注释,有问题的话随时口以交流。谢谢哈微笑


    /*
    1、统计间隔信息,排序;
    2、按照所给板子块数,切开; 
    
    要使木板总长度最少,就要使未盖木板的长度最大。
    我们先用一块木板盖住牛棚,然后,每次从盖住的范围内选一个最大的空隙,以空隙为界将木板分成两块,重复直到分成m块或没有空隙。
    */
    #include <stdio.h>
    //快速排序算法 
    void quick(int *input,int l,int r)
    {
    	if( l < r )
    	{
    		int i = l,j = r, x = input[l];
    		while(i<j)
    		{
    			while(i<j && input[j] <= x)// right to left to find the bigger than x
    				j--;
    			if(i < j)
    				input[i++] = input[j];
    			while(i<j && input[i] >= x)// left to right to find the minner than x
    				i++;
    			if( i< j)
    				input[j--]= input[i];
    		}
    		input[i] = x;
    		quick(input,l ,i-1);
    		quick(input, i+1 ,r);
    	}
    }
    
    int main()
    {
    	int M,S,C;
    	int max_milk[210];
    	int dis[210];
    	scanf("%d %d %d",&M,&S,&C);
    	int i,j;
    	int len_dis;
    	for(i=0 ; i< C ; i++)
    	{
    		scanf("%d",&max_milk[i]);
    	}
    	//获取间隔值 
    	for(i=0,j=0 ; i< C-1 ; i++)
    	{
    		if( max_milk[i+1]- max_milk[i] >1)
    		{
    			dis[j++] = max_milk[i+1] - max_milk[i]-1;
    		}
    	}
    	//排序
    	len_dis = j;
    	quick(dis,0,len_dis-1);
    
    	int count=0;
    	//按照木板数切割 
    	//重复直到分成m块 i < M-1 或者没有空隙   i < len_dis
    	for(i=0 ; i < M-1 && i < len_dis; i++)
    	{
    		count += dis[i];
    	}
    	//去掉头,去掉尾,留下最后盖了板子的 
    	printf("%d", S - (max_milk[0]-1) - (S-max_milk[C-1]) - count);
    	return 0;
    }


    展开全文
  • 没想到要弄这么一个东西。...那么我可以把url和具体说明作为一对键值,但是这对键值配置到哪里比较好? 文件? db? 我不想每增加一个方法就到别的地方再配置一次键值,到注解也许是个不错的方法。 这就需要我...

    没想到要弄这么一个东西。

    起初只是想用interceptor记录一下webservice调用日志,后来却被要求在页面展示。

    展示容易,但只是展示webservice的地址无法让用户从中明白什么。

    那么我可以把url和具体说明作为一对键值,但是这对键值配置到哪里比较好?

    文件? db? 我不想每增加一个方法就到别的地方再配置一次键值,写到注解也许是个不错的方法。

     

    这就需要我在方法被调用后在获得对应的Method对象。

    当然,实现这个效果的方法有很多种,这里主要讲如何在CXF Interceptor中获取。

     

    顺便一提,我是在web应用里配置Spring+CXF,拦截器只是简单继承了JAXRSIn/OutInterceptor。

    比如,我有一个这样的方法:

    
    @GET
    @Path("/hello")
    @Consumes({"*/*"})
    public String Hello(){
    
      return "Hello Alvez!";
    
    }
    
    

     

    我需要在调用结束后记录这个方法的名字 ,但不能是"Hello",而是"哈罗"。

     

    那就定义一个注解并给方法加上:

    
    @Target({ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Description {
      public String value(); 
    }
    
    

     

    
    @GET
    @Path("/hello")
    @Consumes({"*/*"})
    @Description("哈罗")
    public String Hello(){
      return "Hello Alvez!";
    }
    
    

     

    好了,接下来就是从拦截器获得调用信息了。

    InInterceptor还是OutInterceptor?

    无论是哪一个,当我们重写了handleMessage时就自然地想到从Message对象中获取。

    当然,如果你发现正在使用的方法参数列表中没有Message类型,也许你可以这样做。

    
    Message message =  JAXRSUtils.getCurrentMessage();
    
    

     

    因为这个例子中使用到的JAXIn/OutInterceptor继承的是AbstractPhaseInterceptor<Message>,我们就可以理所当然地得到message对象。

    
    public class JAXRSInInterceptor extends AbstractPhaseInterceptor {
          //..      
    }
    

     

    但一个Message里面却有不少内容,Exchange、Destination、Attachment、InterceptorChain,继续递归下去,如果不明白他们分别代表什么就无从找起。

    也许我想用一个org.apache.cxf.service.invoker.MethodDispatcher(2.6.x中是org.apache.cxf.frontend.MethodDispatcher )

    而理由仅仅是因为他有一个通过BindingOperationInfo对象获取java.lang.reflect.Method对象的方法:

    
    public class JAXRSInInterceptor extends AbstractPhaseInterceptor {
          //..      
    }
    
    

     

    这样我就可以在拦截器中这样使用:

    
    Exchange exchange = message.getExchange();
    BindingOperationInfo bindingOperationInfo = exchange.getBindingOperationInfo();
    
    SimpleMethodDispatcher methodDispatcher = new SimpleMethodDispatcher();
    Method method = methodDispatcher.getMethod(bindingOperationInfo);
    
    

     

    但很遗憾,exchange里哪来的bindingOperationInfo?

    那exchange里有什么? 既然他是Map的子类,我可以看看他的keyset,发现outInterceptor中的message.getExchange().keySet()如下:

    org.apache.cxf.rest.message
    org.apache.cxf.resource.operation.name
    org.apache.cxf.interceptor.LoggingMessage.ID
    org.apache.cxf.endpoint.ConduitSelector
    org.apache.cxf.jaxrs.model.OperationResourceInfo
    org.apache.cxf.service.object.last
    org.apache.cxf.endpoint.Endpoint
    org.apache.cxf.service.Service
    root.resource.class
    service.root.provider
    service.root.instance
    org.apache.cxf.Bus
    org.apache.cxf.binding.Binding
    Accept
    Content-Type

     

    看到可以获取OperationResourceInfo,Request/ResponseHandler接口的默认方法中也包括这个参数,只是这两个接口已经在新版本中不能用了。(http://cxf.apache.org/docs/30-migration-guide.html)

    但也提供了替代的方法(http://cxf.apache.org/docs/jax-rs.html)

     

    e.g.我们可以从message中获得一切想要的信息,比如被调用过的方法;

    
    OperationResourceInfo resourceInfo = (OperationResourceInfo) ex.get("org.apache.cxf.jaxrs.model.OperationResourceInfo");
    ClassResourceInfo classResourceInfo = resourceInfo.getClassResourceInfo();
    Path path = classResourceInfo.getPath();
    Class<?> resourceClass = classResourceInfo.getResourceClass();
    Method annotatedMethod = resourceInfo.getAnnotatedMethod();
    Annotation[] declaredAnnotations = annotatedMethod.getDeclaredAnnotations();
    Description annotation = annotatedMethod.getAnnotation(Description.class);
    
    

     

    上面的Description就是文章开始时定义的注解,这样小问题就解决了。

     

    转载于:https://www.cnblogs.com/kavlez/p/4070012.html

    展开全文
  • SpringBoot之Flume整合Logback

    千次阅读 2019-03-11 10:43:44
    我还是喜欢比较浓一点的茶,比如,金骏眉。...但如果是那些已经写好了的项目,该怎么将消息推送到kafka呢,此时我们就可以借助Flume等框架来完成数据的采集,进而推送给kafka。 Flume一定要结合日志框架(如:L...
  • 通过测试还是w95-s7这个比较好。 现在的问题是:当我去好的程序放在了工控机上之后还是会出现这样的问题,就是我的程序部署上去之后还是需要把之前厂家做的数采客户端退掉,我的程序才可以运行成功。没有退出...
  • 微软CMS/Blog系统oXite

    2010-08-07 15:13:07
    还是需要补充开发用户模块的功能,系统默认的管理员数据是在oxite_user表里的,而且管理员的Gravatar对应的邮箱也是存在这个表里边的,搞得我找了半天都不知道在哪里修改那个外国佬的Gravatar头像…… ...
  • 但究竟是哪里出错,能否通过日志展示具体的位置,这样更方便排查问题。 第一种解决方案 网上有解决方案说,打开gradle.properties,添加如下内容:android.enableAapt2=false 2018年之后使用“android.enableAapt...
  • 3.1 解决方案难写在哪里? 31 3.1.1 第一种是没有体系 31 3.1.2 第二种是没有思路 32 3.1.3 第三种是没有素材 32 3.1.4 第四种是没有层次 32 3.2 坏的解决方案有哪些特征?(上) 33 3.2.1 第一个容易犯的错误:只有...
  • 3.1 解决方案难写在哪里? 31 3.1.1 第一种是没有体系 31 3.1.2 第二种是没有思路 32 3.1.3 第三种是没有素材 32 3.1.4 第四种是没有层次 32 3.2 坏的解决方案有哪些特征?(上) 33 3.2.1 第一个容易犯的错误:只有...
  • 3.1 解决方案难写在哪里? 31 3.1.1 第一种是没有体系 31 3.1.2 第二种是没有思路 32 3.1.3 第三种是没有素材 32 3.1.4 第四种是没有层次 32 3.2 坏的解决方案有哪些特征?(上) 33 3.2.1 第一个容易犯的错误:只有...
  • Oracle专家高级编程--详细书签版

    热门讨论 2012-08-21 11:57:09
    8.4.3 索引哪里去了 324 8.4.4 命名与默认名的约束 326 8.4.5 NLS问题 330 8.4.6 表跨越多个表空间 332 8.5 小结 336 第9章 数据装载 337 9.1 SQL*LOADER简介 337 9.2 如何装载 343 9.2.1 装载定界数据 343 ...
  • 那这功能是在哪里做的呢?答案在下面的代码中。 //防重复点击间隔(秒) public static final int CLICK_INTERVAL = 1; /** * requireAll 是意思是是否需要绑定全部参数, false为否 * View的onClick事件绑定 * ...
  • 8.6.4 分析器日志 377 8.7 最佳实践 379 8.8 总结 380 第9章 表结构与索引 382 9.1 数据库物理结构 383 9.1.1 文件与文件组 383 9.1.2 分区与页 386 9.1.3 页中的数据 388 9.1.4 分区 391 9.2 索引概览 393...
  • 8.6.4 分析器日志 377 8.7 最佳实践 379 8.8 总结 380 第9章 表结构与索引 382 9.1 数据库物理结构 383 9.1.1 文件与文件组 383 9.1.2 分区与页 386 9.1.3 页中的数据 388 9.1.4 分区 391 9.2 索引概览 393...
  • 他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能出高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 版权声明 -7...
  • 他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能出高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 版权声明 -7...
  • WINRAR5.0正式注册版

    2013-10-10 10:14:03
    文件名能在日志文件中正确存储。WinRAR 会自动删除非 Unicode 格式的旧 rar.log 文件来避免同一日志文件中混合不同的编码。控制台 RAR 的情况下,你需要手动删除 旧的 rar.log,否则 RAR 会现有的 rar.log 后...
  • 2.1.8 出float x 与“零值”比较的if语句 2.1.9 Internet采用哪种网络协议?该协议的主要层次结构? 2.2.0 Internet物理地址和IP地址转换采用什么协议? 2.2.1 IP地址的编码分为哪俩部分? 2.2.2 用户输入M,N...
  • windowsnt 技术内幕

    2014-04-09 20:47:17
    复制用户帐号 为简化多个帐号的创建工作而建立用户帐号模板 删除和重新命名用户帐号 理解保护缺省的Administrator帐号的重要性 重新命名管理员帐号 理解缺省的Guest帐户 Windows NT在哪里创建帐号 设置口令限制条件 ...
  • Android程序设计基础

    热门讨论 2013-08-03 16:28:04
     “跟本书的2005版一样,我认为Louis的这本书得非常,信息量极其丰富而且实践性强。阅读过程中,你会觉得是跟作者讨论问题。我喜欢这本书,还因为它有自己的观点,而非从在线图书中照搬过来……”.  —— ...
  • ASP EXCEL导入SQL

    2013-01-23 01:17:24
     AJAX技术还使用了一种不同于XML格式的JSON文件格式,这个意义在哪里呢?在REST软件架构下我们不能对于XML文件进行序列化处理,这样程序员必须要使用自己的XML绑定框架。而以序列化的JavaScript对象为基础的JSON已经...
  • 原来也csdn上过一些scrapy的文章,当然学习一门语言官方文档才是最重要的(scrapy也有中文的) Scrapy入门学习初步总览 解决Windows下pip install scrapy 出错 及 pycharm使用安利 scrapy入门学习初步探索之...
  • 低效SQL低效在哪里?  性能低下的根源  硬件原因,数据库的配置不合理,数据库的数据文件和日志文件没有分磁盘存放,会极大影响IO性能  没有建立索引,或者SQL没有走索引。在千万级数据的表上建索引是很有...
  • 有的选项都是越高越,你需要根据自己的硬件情况进行设定,较的质量 通常意味着较高的资源占有率。  设置完毕后,单击“确定”按钮保存设置。 11、如何分配临时管理权限  许多程序安装过程中都要求你...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

在哪里写日志比较好