- 我的2023,如履薄冰,你说我能保住这份工吗
2023-年度总结
最近刷B站发现李连杰的投名状电影片段配合上void这首曲子,还挺魔性的,看了挺上头。也有不少据此二创的视频,都还挺好玩的。感觉用这个来总结2023似乎也挺恰当。我想从技术成长和生活两方面来聊一聊我的2023。技术成长今年写的系列教程很少,总结起来就三个:年初完结了gRPC系列。4、5月份的时候完善了之前的MySQL系列。7月份开始连载Spring源码系列。相比于往年,今年的技术更新确实慢了很多,有
- redo log —— MySQL宕机时数据不丢失的原理
天堂2013
MySQLMySQLredologjava
扫描下方二维码或者微信搜索公众号菜鸟飞呀飞,即可关注微信公众号,阅读更多Spring源码分析、Java并发编程和Netty源码系列文章。问题在开始阅读本文之前,可以先思考一下下面两个问题。众所周知,MySQL有四大特性:ACID,其中D指的是持久性(Durability),它的含义是MySQL的事务一旦提交,它对数据库的改变是永久性的,即数据不会丢失,那么MySQL究竟是如何实现的呢?MySQL数
- Netty源码系列 之 FastThreadLocal源码
etcEriksen
Netty源码java后端netty
目录Netty优化方案之FastThreadLocal前言ThreadLocalThreadLocal是干什么的?为什么要使用ThreadLocal工具类去操控存取目标数据到Thread线程?ThreadLocal的使用场景目标数据存储到Thread线程对象的哪里?怎么样把一个目标数据,存储到某一线程的threadLocals(Map)中?ThreadLocal中如何解决哈希冲突(哈希碰撞)的?线
- Sentinel-Go 源码系列(三)滑动时间窗口算法的工程实现
捉虫大师
要说现在工程师最重要的能力,我觉得工程能力要排第一。就算现在大厂面试经常要手撕算法,也是更偏向考查代码工程实现的能力,之前在群里看到这样的图片,就觉得很离谱。算法与工程实现在Sentinel-Go中,一个很核心的算法是流控(限流)算法。流控可能每个人都听过,但真要手写一个,还是有些困难。为什么流控算法难写?以我的感觉是算法和工程实现上存在一定差异,虽然算法好理解,但却没法照着实现。举个例子,令牌桶
- Vue源码系列讲解——模板编译篇【二】(模板解析阶段)
小彭努力中
Vue源码讲解vue.js前端前端框架
目录1.整体流程2.回到源码3.总结1.整体流程上篇文章中我们说了,在模板解析阶段主要做的工作是把用户在标签内写的模板使用正则等方式解析成抽象语法树(AST)。而这一阶段在源码中对应解析器(parser)模块。解析器,顾名思义,就是把用户所写的模板根据一定的解析规则解析出有效的信息,最后用这些信息形成AST。我们知道在模板内,除了有常规的HTML标签外,用户还会一些文本信息以及在文本信息中包含过滤
- Netty源码系列 之 ChannelPipeline & IO处理回顾 源码
etcEriksen
Netty源码java后端netty
目录ChannelPipeline【包含AbstractUnsafe.write的源码流程,比之前更加深化了,必看】ChannelPipeline概念回顾ChannelPipeline的创建Inbound(输入Handler)所对应的事件传播Outbound(输出Handler)所对应的事件传播【包含AbstractUnsafe.write的源码流程,比之前更加深化了,必看】ChannelPipe
- Vue源码系列讲解——虚拟DOM篇【四】(优化更新子节点)
小彭努力中
Vue源码讲解vue.js前端前端框架
目录1.前言2.优化策略介绍3.新前与旧前4.新后与旧后5.新后与旧前6.新前与旧后7.回到源码8.总结1.前言在上一篇文章中,我们介绍了当新的VNode与旧的oldVNode都是元素节点并且都包含子节点时,Vue对子节点是先外层循环newChildren数组,再内层循环oldChildren数组,每循环外层newChildren数组里的一个子节点,就去内层oldChildren数组里找看有没有与
- Vue源码系列讲解——模板编译篇【一】(综述)
小彭努力中
Vue源码讲解vue.js前端前端框架
目录1.前言2.什么是模板编译3.整体渲染流程4.模板编译内部流程4.1抽象语法树AST4.2具体流程5.总结1.前言在前几篇文章中,我们介绍了Vue中的虚拟DOM以及虚拟DOM的patch(DOM-Diff)过程,而虚拟DOM存在的必要条件是得先有VNode,那么VNode又是从哪儿来的呢?这就是接下来几篇文章要说的模板编译。你可以这么理解:把用户写的模板进行编译,就会产生VNode。2.什么是
- Vue源码系列4------Vue文件的入口-----Vue的初始化
Emily Qin
前端#Vue.js源码解析Vue
这片文章主要分析,在web应用下,Runtime+Compiler构建出来的Vue.js。入口文件在Vue源码中,入口文件为src/platforms/web/entry-runtime-with-compiler.js。入口文件通过export导出的是一个Vue对象,通过import导入相关依赖组件。首先这个Vue对象来自于;而runtime/index中的Vue对象又来自于;core/inde
- Vue源码系列讲解——虚拟DOM篇【三】(更新子节点)
小彭努力中
Vue源码讲解前端vue.js前端框架
1.前言在上一篇文章中,我们了解了Vue中的patch过程,即DOM-Diff算法。并且知道了在patch过程中基本会干三件事,分别是:创建节点,删除节点和更新节点。创建节点和删除节点都比较简单,而更新节点因为要处理各种可能出现的情况所以逻辑略微复杂一些,但是没关系,我们通过分析过程,对照源码,画逻辑流程图来帮助我们理解了其中的过程。最后我们还遗留了一个问题,那就是在更新节点过程中,新旧VNode
- Vue源码系列讲解——变化侦测篇【下】(Array的变化侦测)
小彭努力中
Vue源码讲解vue.js前端前端框架
目录1.前言2.在哪里收集依赖3.使Array型数据可观测3.1思路分析3.2数组方法拦截器3.3使用拦截器4.再谈依赖收集4.1把依赖收集到哪里4.2如何收集依赖4.3如何通知依赖5.深度侦测6.数组新增元素的侦测7.不足之处8.总结1.前言上一篇文章中我们介绍了Object数据的变化侦测方式,本篇文章我们来看一下对Array型数据的变化Vue是如何进行侦测的。为什么Object数据和Array
- Vue源码系列讲解——虚拟DOM篇【一】(Vue中的虚拟DOM)
小彭努力中
Vue源码讲解vue.js前端前端框架
目录1.前言2.虚拟DOM简介2.1什么是虚拟DOM?2.2为什么要有虚拟DOM?3.Vue中的虚拟DOM3.1VNode类3.2VNode的类型3.2.1注释节点3.2.2文本节点3.2.3克隆节点3.2.4元素节点3.2.5组件节点3.2.6函数式组件节点3.2.7小结3.3VNode的作用4.总结1.前言虚拟DOM,这个名词作为当下的前端开发人员你一定不会陌生,至少会略有耳闻,但不会闻所未闻
- Vue源码系列讲解——虚拟DOM篇【二】(Vue中的DOM-Diff)
小彭努力中
Vue源码讲解前端vue.js
目录1.前言2.patch3.创建节点4.删除节点5.更新节点6.总结1.前言在上一篇文章介绍VNode的时候我们说了,VNode最大的用途就是在数据变化前后生成真实DOM对应的虚拟DOM节点,然后就可以对比新旧两份VNode,找出差异所在,然后更新有差异的DOM节点,最终达到以最少操作真实DOM更新视图的目的。而对比新旧两份VNode并找出差异的过程就是所谓的DOM-Diff过程。DOM-Dif
- 读懂 FastChat 大模型部署源码所需的异步编程基础
javastart
pythonpythonfastapigunicorn
原文:读懂FastChat大模型部署源码所需的异步编程基础-知乎目录0.前言1.同步与异步的区别2.协程3.事件循环4.await5.组合协程6.使用Semaphore限制并发数7.运行阻塞任务8.异步迭代器asyncfor9.异步上下文管理器asyncwith10.参考本文是读懂FastChat大模型部署源码系列的第二篇,持续更新中,欢迎关注:不理不理:读懂FastChat大模型部署源码所需的W
- Netty源码系列 之 EventLoop & run()方法 源码
etcEriksen
Netty源码javanetty
EventLoop[实现类为NioEventLoop,我们研究NioEventLoop即可]EventLoop是一个单线程的线程池核心作用:处理执行IO操作(accept,read,write事件),普通任务,定时任务EventLoop封装了Selector复用器,Thread线程,以及任务队列为什么EventLoop需要一个任务队列?因为EventLoop是一个单线程的线程池,如果有多个任务请求
- 七、Nacos源码系列:Nacos服务发现
每天都要进步一点点
#Nacos源码Nacos源码Nacos服务发现Nacos注册中心Nacos服务发现
目录一、服务发现二、getServices():获取服务列表2.1、获取服务列表2.2、总结图三、getInstances(serviceId):获取服务实例列表3.1、从缓存中获取服务信息3.2、缓存为空,执行订阅服务3.2.1、调度更新,往线程池中提交一个UpdateTask任务3.2.2、订阅服务3.2.3、处理服务信息3.3、非订阅模式,通过grpc发送ServiceQueryReques
- 源码系列——ArrayList动态扩容机制
小白菜aaa
前言ArrayList继承了AbstractList类,实现了List接口,并且ArrayList底层是一个动态扩容的数组。ArrayList实现了RandomAccess接口,此接口是一个随机访问的标记接口(不需要遍历,直接通过下标访问数组元素的内存地址),此外还实现了Serializable接口支持序列化(就是将对象转化为字符序的形式,这些字符序列包括了对象的字段和方法,序列化的对象可以被写入
- Vue源码系列讲解——变化侦测篇【上】(何为变化侦测)
小彭努力中
Vue源码讲解vue.js前端开发语言前端框架
目录1.前言2.什么是变化侦测3.总结1.前言众所周知,Vue最大的特点之一就是数据驱动视图,那么什么是数据驱动视图呢?在这里,我们可以把数据理解为状态,而视图就是用户可直观看到页面。页面不可能是一成不变的,它应该是动态变化的,而它的变化也不应该是无迹可寻的,它或者是由用户操作引起的,亦或者是由后端数据变化引起的,不管它是因为什么引起的,我们统称为它的状态变了,它由前一个状态变到了后一个状态,页面
- Vue源码系列讲解——变化侦测篇【中】(Object的变化侦测)
小彭努力中
Vue源码讲解前端前端框架vue.js开发语言
目录1.前言2.使Object数据变得“可观测”3.依赖收集3.1什么是依赖收集3.2何时收集依赖?何时通知依赖更新?3.3把依赖收集到哪里4.依赖到底是谁5.不足之处6.总结1.前言在上一篇文章中,我们知道:数据驱动视图的关键点则在于我们如何知道数据发生了变化,只要知道数据在什么时候变了,那么问题就变得迎刃而解,我们只需在数据变化的时候去通知视图更新即可。要想知道数据什么时候被读取了或数据什么时
- Megatron-LM源码系列(七):Distributed-Optimizer分布式优化器实现Part2
MLTalks
大模型训练框架分布式深度学习人工智能pytorch
1.使用入口DistributedOptimizer类定义在megatron/optimizer/distrib_optimizer.py文件中。创建的入口是在megatron/optimizer/__init__.py文件中的get_megatron_optimizer函数中。根据传入的args.use_distributed_optimizer参数来判断是用DistributedOptimiz
- 图解java.util.concurrent并发包源码系列——深入理解定时任务线程池ScheduledThreadPoolExecutor
黄俊懿
java开发语言后端并发编程JUCjvm
深入理解定时任务线程池ScheduledThreadPoolExecutorScheduledThreadPoolExecutor作用与用法ScheduledThreadPoolExecutor内部执行流程DelayedWorkQueueScheduledFutureTask源码分析任务提交ScheduledFutureTask的属性和方法delayedExecute(t)任务执行Schedule
- 六、Nacos源码系列:Nacos健康检查
每天都要进步一点点
#Nacos源码Nacos健康监测Nacos源码Nacos健康检查Nacos
目录一、简介二、健康检查流程2.1、健康检查2.2、客户端释放连接事件2.3、客户端断开连接事件2.4、小结2.5、总结图三、服务剔除一、简介Nacos作为注册中心不止提供了服务注册和服务发现的功能,还提供了服务可用性检测的功能,在Nacos1.x的版本中,临时实例走的是distro协议,客户端向注册中心发送心跳来维持自身的健康(healthy)状态,持久实例则走的是Raft协议存储。主要有两种检
- Mybatis 源码系列:领略设计模式在 Mybatis 其中的应用
Code技术分享
mybatisjava设计模式
文章目录一、Builder模式二、工厂模式三、单例模式四、代理模式五、组合模式六、模板方式模式七、适配器模式八、装饰器模式九、迭代器模式虽然我们都知道有23种设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。Mybatis至少遇到了以下的设计模式的使用:Builder模式,例如SqlSess
- MyBatis 源码系列:MyBatis 解析配置文件、二级缓存、SQL
Code技术分享
mybatisjava
文章目录解析全局配置文件二级缓存解析解析二级缓存缓存中的调用过程缓存中使用的设计模式解析SQL解析全局配置文件启动流程分析Stringresource="mybatis-config.xml";//将XML配置文件构建为Configuration配置类reader=Resources.getResourceAsReader(resource);//通过加载配置文件流构建一个SqlSessionFa
- 阅读go语言工具源码系列之gopacket(谷歌出品)----第二集 layers-巧妙的抽象与无聊的协议包
伏虎山真人
golanggolang驱动开发开发语言
上一集中我们讲到了wpcap.dll的go封装方法,对于linux系统下libpcap的go封装采用的是常用的cgo方式,想了解的可以看看pcap文件夹中的pcap_unix.go。我们得到了wpcap.dll的go调用,就可以利用它来进行列举所有网络设备,例如以下代码packagemainimport("fmt""github.com/google/gopacket/pcap""log")//得
- 阅读go语言工具源码系列之gopacket(谷歌出品)----第一集 DLL的go封装
伏虎山真人
golanggolang开发语言后端
gopacket项目是google出品的golang第三方库,项目源码地址google/gopacket:ProvidespacketprocessingcapabilitiesforGo(github.com)gopacket核心是对经典的抓包工具libpcap(linux平台)和npcap(windows平台)的go封装,提供了更方便的go语言操作接口,里面如何实现的,接下来的文章中会有介绍。
- Spring手撸源码系列-给Bean对象注入属性
PromisingGirl-Du
#springspringjava后端
上一章是给Bean对象注入构造参数,这一章就来实现给Bean对象注入属性,一般来说类有构造方法也会有全局变量的属性,那么我们在创造的时候就需要注入进来,不能不管,这样才是一个完整的创建对象。对于属性的创建除了基本类型也会有引用类型,引用其他的Bean对象等等都要考虑。1.工程目录标红的是新添加的├─src│├─main││├─java│││└─com│││└─spring│││└─sourceco
- 深入Hotspot源码与Linux内核理解NIO与Epoll
JAVA程序
前言距离上一次发布文章将近半年左右了,具体为什么停更,说实话一部分原因是去年10月1放假之后我玩疯了....另外一部原因是总感觉文章写到一定地步之后,我有点不知道写什么了,去年主要更新的是Spring源码系列的文章,我的主要精力也放在了Spring相关源码的研究上,Spring源码系列的文章,到现在为止,大体也告一段落了,后续是准备出一版关于Netty相关的系列文章,过年的时候着重研究了下!上个图
- Vue 3.2 源码系列(Vue.js的设计与实现)01-命令式VS声明式
kangkang-
Vue.js源码分析vue.js前端javascript
我通过看完这本书后造成的一部分总结。选择挑选出重要的部分先来介绍一些基本的概念命令式与声明式运行时与编译器副作用一.声明式和命令式命令式与声明式的概念在前端框架的设计中经常会出现,那么究竟什么是命令式、什么是声明式呢?这一咖,我们就主要来明确这两个概念:命令式比如现在领导叫你实现一个大屏展示的数据1.你现在需要用到vue2.需要用到springboot3.需要去考虑一些echarts的参数...在
- Android 12.0源码系列之IMS(二)InputManager
bubbleben
Android12.0源码系列androidframework
Android12.0源码系列之IMS(二)InputManager本篇涉及到的主要代码:frameworks\native\services\inputflingerframeworks\base\services\core\Android.bpframeworks\base\services\core\jni\Android.bpframeworks\base\services\core\jn
- jvm调优总结(从基本概念 到 深度优化)
oloz
javajvmjdk虚拟机应用服务器
JVM参数详解:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html
Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。
- 【Scala十六】Scala核心十:柯里化函数
bit1129
scala
本篇文章重点说明什么是函数柯里化,这个语法现象的背后动机是什么,有什么样的应用场景,以及与部分应用函数(Partial Applied Function)之间的联系 1. 什么是柯里化函数
A way to write functions with multiple parameter lists. For instance
def f(x: Int)(y: Int) is a
- HashMap
dalan_123
java
HashMap在java中对很多人来说都是熟的;基于hash表的map接口的非同步实现。允许使用null和null键;同时不能保证元素的顺序;也就是从来都不保证其中的元素的顺序恒久不变。
1、数据结构
在java中,最基本的数据结构无外乎:数组 和 引用(指针),所有的数据结构都可以用这两个来构造,HashMap也不例外,归根到底HashMap就是一个链表散列的数据
- Java Swing如何实时刷新JTextArea,以显示刚才加append的内容
周凡杨
java更新swingJTextArea
在代码中执行完textArea.append("message")后,如果你想让这个更新立刻显示在界面上而不是等swing的主线程返回后刷新,我们一般会在该语句后调用textArea.invalidate()和textArea.repaint()。
问题是这个方法并不能有任何效果,textArea的内容没有任何变化,这或许是swing的一个bug,有一个笨拙的办法可以实现
- servlet或struts的Action处理ajax请求
g21121
servlet
其实处理ajax的请求非常简单,直接看代码就行了:
//如果用的是struts
//HttpServletResponse response = ServletActionContext.getResponse();
// 设置输出为文字流
response.setContentType("text/plain");
// 设置字符集
res
- FineReport的公式编辑框的语法简介
老A不折腾
finereport公式总结
FINEREPORT用到公式的地方非常多,单元格(以=开头的便被解析为公式),条件显示,数据字典,报表填报属性值定义,图表标题,轴定义,页眉页脚,甚至单元格的其他属性中的鼠标悬浮提示内容都可以写公式。
简单的说下自己感觉的公式要注意的几个地方:
1.if语句语法刚接触感觉比较奇怪,if(条件式子,值1,值2),if可以嵌套,if(条件式子1,值1,if(条件式子2,值2,值3)
- linux mysql 数据库乱码的解决办法
墙头上一根草
linuxmysql数据库乱码
linux 上mysql数据库区分大小写的配置
lower_case_table_names=1 1-不区分大小写 0-区分大小写
修改/etc/my.cnf 具体的修改内容如下:
[client]
default-character-set=utf8
[mysqld]
datadir=/var/lib/mysql
socket=/va
- 我的spring学习笔记6-ApplicationContext实例化的参数兼容思想
aijuans
Spring 3
ApplicationContext能读取多个Bean定义文件,方法是:
ApplicationContext appContext = new ClassPathXmlApplicationContext(
new String[]{“bean-config1.xml”,“bean-config2.xml”,“bean-config3.xml”,“bean-config4.xml
- mysql 基准测试之sysbench
annan211
基准测试mysql基准测试MySQL测试sysbench
1 执行如下命令,安装sysbench-0.5:
tar xzvf sysbench-0.5.tar.gz
cd sysbench-0.5
chmod +x autogen.sh
./autogen.sh
./configure --with-mysql --with-mysql-includes=/usr/local/mysql
- sql的复杂查询使用案列与技巧
百合不是茶
oraclesql函数数据分页合并查询
本片博客使用的数据库表是oracle中的scott用户表;
------------------- 自然连接查询
查询 smith 的上司(两种方法)
&
- 深入学习Thread类
bijian1013
javathread多线程java多线程
一. 线程的名字
下面来看一下Thread类的name属性,它的类型是String。它其实就是线程的名字。在Thread类中,有String getName()和void setName(String)两个方法用来设置和获取这个属性的值。
同时,Thr
- JSON串转换成Map以及如何转换到对应的数据类型
bijian1013
javafastjsonnet.sf.json
在实际开发中,难免会碰到JSON串转换成Map的情况,下面来看看这方面的实例。另外,由于fastjson只支持JDK1.5及以上版本,因此在JDK1.4的项目中可以采用net.sf.json来处理。
一.fastjson实例
JsonUtil.java
package com.study;
impor
- 【RPC框架HttpInvoker一】HttpInvoker:Spring自带RPC框架
bit1129
spring
HttpInvoker是Spring原生的RPC调用框架,HttpInvoker同Burlap和Hessian一样,提供了一致的服务Exporter以及客户端的服务代理工厂Bean,这篇文章主要是复制粘贴了Hessian与Spring集成一文,【RPC框架Hessian四】Hessian与Spring集成
在
【RPC框架Hessian二】Hessian 对象序列化和反序列化一文中
- 【Mahout二】基于Mahout CBayes算法的20newsgroup的脚本分析
bit1129
Mahout
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information re
- nginx三种获取用户真实ip的方法
ronin47
随着nginx的迅速崛起,越来越多公司将apache更换成nginx. 同时也越来越多人使用nginx作为负载均衡, 并且代理前面可能还加上了CDN加速,但是随之也遇到一个问题:nginx如何获取用户的真实IP地址,如果后端是apache,请跳转到<apache获取用户真实IP地址>,如果是后端真实服务器是nginx,那么继续往下看。
实例环境: 用户IP 120.22.11.11
- java-判断二叉树是不是平衡
bylijinnan
java
参考了
http://zhedahht.blog.163.com/blog/static/25411174201142733927831/
但是用java来实现有一个问题。
由于Java无法像C那样“传递参数的地址,函数返回时能得到参数的值”,唯有新建一个辅助类:AuxClass
import ljn.help.*;
public class BalancedBTree {
- BeanUtils.copyProperties VS PropertyUtils.copyProperties
诸葛不亮
PropertyUtilsBeanUtils
BeanUtils.copyProperties VS PropertyUtils.copyProperties
作为两个bean属性copy的工具类,他们被广泛使用,同时也很容易误用,给人造成困然;比如:昨天发现同事在使用BeanUtils.copyProperties copy有integer类型属性的bean时,没有考虑到会将null转换为0,而后面的业
- [金融与信息安全]最简单的数据结构最安全
comsci
数据结构
现在最流行的数据库的数据存储文件都具有复杂的文件头格式,用操作系统的记事本软件是无法正常浏览的,这样的情况会有什么问题呢?
从信息安全的角度来看,如果我们数据库系统仅仅把这种格式的数据文件做异地备份,如果相同版本的所有数据库管理系统都同时被攻击,那么
- vi区段删除
Cwind
linuxvi区段删除
区段删除是编辑和分析一些冗长的配置文件或日志文件时比较常用的操作。简记下vi区段删除要点备忘。
vi概述
引文中并未将末行模式单独列为一种模式。单不单列并不重要,能区分命令模式与末行模式即可。
vi区段删除步骤:
1. 在末行模式下使用:set nu显示行号
非必须,随光标移动vi右下角也会显示行号,能够正确找到并记录删除开始行
- 清除tomcat缓存的方法总结
dashuaifu
tomcat缓存
用tomcat容器,大家可能会发现这样的问题,修改jsp文件后,但用IE打开 依然是以前的Jsp的页面。
出现这种现象的原因主要是tomcat缓存的原因。
解决办法如下:
在jsp文件头加上
<meta http-equiv="Expires" content="0"> <meta http-equiv="kiben&qu
- 不要盲目的在项目中使用LESS CSS
dcj3sjt126com
Webless
如果你还不知道LESS CSS是什么东西,可以看一下这篇文章,是我一朋友写给新人看的《CSS——LESS》
不可否认,LESS CSS是个强大的工具,它弥补了css没有变量、无法运算等一些“先天缺陷”,但它似乎给我一种错觉,就是为了功能而实现功能。
比如它的引用功能
?
.rounded_corners{
- [入门]更上一层楼
dcj3sjt126com
PHPyii2
更上一层楼
通篇阅读完整个“入门”部分,你就完成了一个完整 Yii 应用的创建。在此过程中你学到了如何实现一些常用功能,例如通过 HTML 表单从用户那获取数据,从数据库中获取数据并以分页形式显示。你还学到了如何通过 Gii 去自动生成代码。使用 Gii 生成代码把 Web 开发中多数繁杂的过程转化为仅仅填写几个表单就行。
本章将介绍一些有助于更好使用 Yii 的资源:
- Apache HttpClient使用详解
eksliang
httpclienthttp协议
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会
- zxing二维码扫描功能
gundumw100
androidzxing
经常要用到二维码扫描功能
现给出示例代码
import com.google.zxing.WriterException;
import com.zxing.activity.CaptureActivity;
import com.zxing.encoding.EncodingHandler;
import android.app.Activity;
import an
- 纯HTML+CSS带说明的黄色导航菜单
ini
htmlWebhtml5csshovertree
HoverTree带说明的CSS菜单:纯HTML+CSS结构链接带说明的黄色导航
在线体验效果:http://hovertree.com/texiao/css/1.htm代码如下,保存到HTML文件可以看到效果:
<!DOCTYPE html >
<html >
<head>
<title>HoverTree
- fastjson初始化对性能的影响
kane_xie
fastjson序列化
之前在项目中序列化是用thrift,性能一般,而且需要用编译器生成新的类,在序列化和反序列化的时候感觉很繁琐,因此想转到json阵营。对比了jackson,gson等框架之后,决定用fastjson,为什么呢,因为看名字感觉很快。。。
网上的说法:
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。
- 基于Mybatis封装的增删改查实现通用自动化sql
mengqingyu
DAO
1.基于map或javaBean的增删改查可实现不写dao接口和实现类以及xml,有效的提高开发速度。
2.支持自定义注解包括主键生成、列重复验证、列名、表名等
3.支持批量插入、批量更新、批量删除
<bean id="dynamicSqlSessionTemplate" class="com.mqy.mybatis.support.Dynamic
- js控制input输入框的方法封装(数字,中文,字母,浮点数等)
qifeifei
javascript js
在项目开发的时候,经常有一些输入框,控制输入的格式,而不是等输入好了再去检查格式,格式错了就报错,体验不好。 /** 数字,中文,字母,浮点数(+/-/.) 类型输入限制,只要在input标签上加上 jInput="number,chinese,alphabet,floating" 备注:floating属性只能单独用*/
funct
- java 计时器应用
tangqi609567707
javatimer
mport java.util.TimerTask; import java.util.Calendar; public class MyTask extends TimerTask { private static final int
- erlang输出调用栈信息
wudixiaotie
erlang
在erlang otp的开发中,如果调用第三方的应用,会有有些错误会不打印栈信息,因为有可能第三方应用会catch然后输出自己的错误信息,所以对排查bug有很大的阻碍,这样就要求我们自己打印调用的栈信息。用这个函数:erlang:process_display (self (), backtrace).需要注意这个函数只会输出到标准错误输出。
也可以用这个函数:erlang:get_s