- Go Web实战-3.集成Logrus
DevelopLink
物联网GinLogrusGolangWeb
Gin自带了logger,可以输出到文件。不过为了更好的管理日志,以及后面的集中采集,这里引入了logrus。先看看Gin的log,官方代码,比较简单。funcmain(){//关闭打印的字体颜色。到文件里面不需要颜色gin.DisableConsoleColor()//输出到文件f,_:=os.Create("gin.log")gin.DefaultWriter=io.MultiWriter(f
- git commit 自动修复 eslint 和 prettier
等下吃什么?
前端前端
npminstalllint-stagedeslintprettier--save-dev修改package.json"lint-staged":{"**/*.{js,jsx,ts,tsx,vue}":["prettier--write","eslint--fix"],"**/*.json":["prettier--write"],"**/*.{less,md}":["prettier--writ
- TP5 —— 隐藏 index.php 入口文件
每天瞎忙的农民工
phpthinkphp5隐藏index.php入口文件
一,找到/public/.htaccess文件,如果你的入口文件已经移动到根目录下,那么你的.htaccess文件也要剪切到根目录下,要确保.htaccess跟入口的index.php保持同级二,根据你的php环境分别设置.htaccess文件:把.htaccess修改为以下内容Options+FollowSymlinks-MultiviewsRewriteEngineonRewriteCond%
- How To Write Shared Libraries(55)
i_need_job
3.2DefiningStability(4)Notmakingthechangescanhavenegativeresults.Blindlychangingthecodewilldefinitelyhavenegativeresults.MakingthechangeandstillmaintainingABIstabilityrequirestheuseofversioning.不标记改变会
- c语言atomic能用数组的,属性关键字
非著名程序~~~
c语言atomic能用数组的
一.属性关键字的分类?读写权限:readonly、readwrite(默认)原子相关:atomic(默认)、nonatomic(常用)aomic:可以保证赋值和获取是线程安全的。指的是成员属性直接的获取和赋值,不包括操作和访问。eg:用atomic修饰数组,获取和赋值保证线程安全,添加、移除对象,是不保证线程安全的。引用计数retain(mrc)、strong(arc):修饰对象assign(修饰
- 使用 i3.LayoutCell() 方法绘制版图并输出为 GDS 文件
勤奋的大熊猫
LucedaIPKISSAndKLayoutIPKISS芯片版图绘制
使用i3.LayoutCell方法绘制版图并输出为GDS文件引言正文引言在IPKISSi3.SRef()函数一文中我们介绍了如何使用i3.SRef()函数将instance对象添加到i3.LayoutCell()创建的Cell对象上。但是当我们使用write_gdsii()输出版图时代码就会报错。这里我们将介绍如何解决这个问题。这里需要告诉大家的是,IPKISS官网给出的教程是错误的,无法正常运行
- Spark - 升级版数据源JDBC2
大猪大猪
在spark的数据源中,只支持Append,Overwrite,ErrorIfExists,Ignore,这几种模式,但是我们在线上的业务几乎全是需要upsert功能的,就是已存在的数据肯定不能覆盖,在mysql中实现就是采用:ONDUPLICATEKEYUPDATE,有没有这样一种实现?官方:不好意思,不提供,dounine:我这有呀,你来用吧。哈哈,为了方便大家的使用我已经把项目打包到mave
- http.FileServer修改Header
hengshen
定义一个函数包裹Handler,返回HandleFunc,然后通过ResponseWriter修改Header。funcchangeHeaderThenServe(hhttp.Handler)http.HandlerFunc{returnfunc(whttp.ResponseWriter,r*http.Request){//Setsomeheader.w.Header().Add("Keep-Al
- linuxcnc-cia402 README
错误重复学习记录
笔记
hal-cia402CiA402器件的HAL接口,该组件用作硬件与Hal模块(如Ethercat、CAN总线或其他)之间的粘合层。它将原始IO数据从PDO转换为常见的linuxcncHal引脚结构,并具有内置逻辑用于CiA402状态控制、反馈处理、外部归位和内置缩放功能。它提供两个函数:read_all和write_all。相应任务中的整合概念应如下:硬件输入-->--CiA402_read-->
- 为什么要写super(props)
xiaohesong
原文:WhyDoWeWritesuper(props)?本文原文:为什么写render(props)我听说hooks最近很热。具有讽刺意味的是,我想通过描述有关类组件的有趣事实来开始这个博客。那会怎么样!这些陷阱对于有效地使用React并不重要。但是如果你想更深入地了解事情的运作方式,你可能会发现它们很有趣。这是第一个。我写过的super(props)比我知道的要多:classCheckboxex
- SpringMVC参数解析器HandlerMethodArgumentResolver
这是一条海鱼
SpringMVC
前言在享受SpringMVC带给你便捷的时候,你是否曾经这样疑问过:Controller的handler方法参数能够自动完成参数封装(有时即使没有@PathVariable、@RequestParam、@RequestBody等注解都可),甚至在方法参数任意位置写HttpServletRequest、HttpSession、Writer…等类型的参数,它自动就有值了便可直接使用。对此你是否想问一句
- babel系列科普文
赖次Go
《Babel插件开发入门指南》https://www.chyingp.com/posts/how-to-write-a-babel-plugin/《babel-preset-env学习指南》https://www.chyingp.com/posts/understanding-babel-preset-env/《Babel:plugin、preset的区别与使用》https://www.chyin
- vulnhub靶机-DC2-Writeup
含日
靶机linux安全靶机渗透测试安全漏洞
0x01部署靶机地址:https://www.vulnhub.com/entry/dc-2,311/DESCRIPTIONMuchlikeDC-1,DC-2isanotherpurposelybuiltvulnerablelabforthepurposeofgainingexperienceintheworldofpenetrationtesting.AswiththeoriginalDC-1,i
- 超越传统:Reflection 70B如何革新AI语言处理
黑金IT
人工智能AI编程
Reflection70B:AI语言模型的新里程碑AI领域迎来了革命性的变革,HyperWrite公司推出的开源AI大模型Reflection70B,以其卓越的性能在多个基准测试中超越了GPT-4o和Llama3.1。这款基于Meta的Llama3.170BInstruct构建的模型,采用了先进的“Reflection-Tuning”技术,能够在最终确定回答前检测并纠正自身的错误,显著提高了输出的
- linux sg io hdr,探索 Linux 通用 SCSI 驱动器
weixin_39628342
linuxsgiohdr
典型的SCSI通用驱动器命令对于字符设备,SCSI通用驱动器支持许多典型的系统调用,比如open()、close()、read()、write、poll()和ioctl()。向特定的SCSI设备发送SCSI命令的步骤也非常简单:1.打开SCSI通用设备文件(比如sg1)获取SCSI设备的文件描述符。2.准备好SCSI命令。3.设置相关的内存缓冲区。4.调用ioctl()函数执行SCSI命令。5.关
- 数据分析师之打杂入门--运营学习
爱数据爱分析
接上篇数据分析师之打杂入门--数据技能学习(网址:https://www.jianshu.com/writer#/notebooks/41435296/notes/58416752)在经历了辛苦的业务学习、数据学习后,很多分析师们以为可以羽扇纶巾、指点江山、激扬数据、提出策略、指导业务发展了。然而现实是:1、今天拉个数据,明天换个统计口径再拉数据。2、本周开发个报表,下周叠加字段继续开发报表,加班
- C++ opencv之视频读写(VideoCapture,VideoWriter)
阿超没有蛀牙
OpenCVc++opencv
这篇博客主要讲解OpenCV中视频读写。主要涉及到两个API函数:VideoCaptureVideoWriter一、函数简介1.1VideoCapture视频文件读取、摄像头读取、视频流读取VideoCapture既支持从视频文件(.avi,.mpg格式)读取,也支持直接从摄像机(比如电脑自带摄像头)中读取。要想获取视频需要先创建一个VideoCapture对象,VideoCapture对象的创建
- IO 进程——管道
WBGZSL
c++开发语言
一、无名管道1、特点1)只能用于亲缘关系间的通信2)半双工通信模式,拥有读端与写端3)管道是一种特殊的文件,对它的读写可以使用文件IO,如read,write4)管道是基于文件描述符的通信方式。当一个管道建立时,它会创建两个文件描述符fd[0](读管道)与fd[1](写管道)5)不支持sleek操作2、读写特性1)管道中无数据时,读操作阻塞2)管道满时(64k),写操作会阻塞3)只有在管道的读端存
- 使用C++和libcurl下载指定的文件
数据服务生
c++数据库开发语言
使用C++语言,利用libcurl库,下载指定的https中的文件:比如https://www.xxxx.com/xxx/yyy/zzz.pdf#include#include#include//写入数据的回调函数size_tWriteData(void*ptr,size_tsize,size_tnmemb,std::ofstream*stream){stream->write(static_ca
- 2023-4-13晨间日记
深海未眠夜未央
今天是什么日子起床:6:00就寝:10:00天气:sunny心情:nottoobad纪念日:no任务清单昨日完成的任务,最重要的三件事:改进:savemoney习惯养成:writeadiary周目标·完成进度1.readsixarticles2.writefourdiaries3.recitewords学习·信息·阅读learnmoreknowledges健康·饮食·锻炼1.eatbreakfas
- C#干货 13款你没用过的技巧 [进阶技巧] [高级特性]
一个代码猎人
ASP.NETCorec#开发语言
1.自动属性初始化器自动属性初始化器允许在声明属性时直接赋初始值。publicclassPerson{publicstringName{get;set;}="Unknown";publicintAge{get;set;}=18;}classProgram{staticvoidMain(){varperson=newPerson();Console.WriteLine($"{person.Name}
- --考核总结--
免檒
javajvm开发语言
一、hashmap的线程不安全性以下的示例是hashmap在三个线程的并发下进行添加操作importjava.util.HashMap;importjava.util.Map;publicclassMain_1{ privatestaticMapsharedMap=newHashMapaddToMap("key1","value1")); Threadwriter2=newThread(
- POST请求传入中文参数,接收端乱码
常敲代码手不生
IDEA学习与实践
问题描述:通过post请求调试短信接口发送出去后,客户端无法收到短信,中文内容乱码追踪过程:接口采用post请求进行,无法收取短信的接口代码如下:publicstaticStringsendPost(Stringurl,MapparamMap){PrintWriterout=null;BufferedReaderin=null;Stringresult="";try{URLrealUrl=newU
- dockerfile部署fastapi项目
hzw0510
dockerfastapi
dockerfile部署fastapi项目1、Dockerfile#使用Python官方镜像作为基础镜像FROMpython:3.8-slim#更新apt-get源并安装依赖#RUNapt-getupdate-y&&apt-getinstall-ygit#设置环境变量ENVPYTHONDONTWRITEBYTECODE1ENVPYTHONUNBUFFERED1#创建工作目录WORKDIR/app#
- Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions
让梦想疯狂
Dockerdocker
Docker容器运行后一直重启,通常意味着容器内的应用程序遇到了问题并且崩溃了。Jenkins容器可能因为挂载的卷的权限问题无法写入。以下是一些常见的解决方法:检查容器日志:dockerlogs调整宿主机目录的权限sudochown-R1000/path/jenkins_home
- 2019-02-05
ruicore
LeetCode274.H-Index.jpgLeetCode274.H-IndexDescriptionGivenanarrayofcitations(eachcitationisanon-negativeinteger)ofaresearcher,writeafunctiontocomputetheresearcher'sh-index.Accordingtothedefinitionofh-
- InnoDB引擎之-两次写(Double Write)
胸毛飘逸
InnoDB引擎有几个重点特性,为其带来了更好的性能和可靠性:插入缓冲(InsertBuffer)两次写(DoubleWrite)自适应哈希索引(AdaptiveHashIndex)异步IO(AsyncIO)刷新邻接页(FlushNeighborPage)经典Partialpagewrite问题介绍doublewrite之前我们有必要了解partialpagewrite(部分页失效)。InnoDB
- 【Day09-练习】
完球了
java开发语言学习
1.1字符流利用字符流将一个文本文件复制到E:盘下,例如:D:/1.txt复制到E:/2.txt请使用字符流:FileReader和FileWriter实现publicclassTest1{publicstaticvoidmain(String[]args)throwsException{try(FileReaderreader=newFileReader("D:/1.txt");FileWrit
- .Net Core 笔试1
m0_50985216
.netcore服务器前端
1、用两个线程一个输出字母一个输出数字,交替输出Chat数组char[]aI="1234567".ToCharArray();char[]aC="ABCDEFG".ToCharArray();Tasktask1=null;Tasktask2=null;task1=Task.Run(()=>{foreach(variteminaI){Console.WriteLine(item);task1.Wai
- 《随机漫步的傻瓜》第8章|不要成为暗夜倖存者
小觅蜂
今日继续跟着定投人生群进行FooledbyRandomness《中译:随机骗局/随机漫步的傻瓜》共读。进度进入到第二部份:打字机前的猴子(MONKEYSONTYPEWRITERS)—谈幸存者偏误和其他偏误(SurvivorshipandOtherBiases)。第二部份的范围有四个关于心理认知偏误的章节。内容经过笔者多次月读的了解,分别是:第8章谈幸存者偏误、第9章谈资料採摘、第10章谈人生中非线
- 解线性方程组
qiuwanchi
package gaodai.matrix;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Sc
- 在mysql内部存储代码
annan211
性能mysql存储过程触发器
在mysql内部存储代码
在mysql内部存储代码,既有优点也有缺点,而且有人倡导有人反对。
先看优点:
1 她在服务器内部执行,离数据最近,另外在服务器上执行还可以节省带宽和网络延迟。
2 这是一种代码重用。可以方便的统一业务规则,保证某些行为的一致性,所以也可以提供一定的安全性。
3 可以简化代码的维护和版本更新。
4 可以帮助提升安全,比如提供更细
- Android使用Asynchronous Http Client完成登录保存cookie的问题
hotsunshine
android
Asynchronous Http Client是android中非常好的异步请求工具
除了异步之外还有很多封装比如json的处理,cookie的处理
引用
Persistent Cookie Storage with PersistentCookieStore
This library also includes a PersistentCookieStore whi
- java面试题
Array_06
java面试
java面试题
第一,谈谈final, finally, finalize的区别。
final-修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能
- 网站加速
oloz
网站加速
前序:本人菜鸟,此文研究总结来源于互联网上的资料,大牛请勿喷!本人虚心学习,多指教.
1、减小网页体积的大小,尽量采用div+css模式,尽量避免复杂的页面结构,能简约就简约。
2、采用Gzip对网页进行压缩;
GZIP最早由Jean-loup Gailly和Mark Adler创建,用于UNⅨ系统的文件压缩。我们在Linux中经常会用到后缀为.gz
- 正确书写单例模式
随意而生
java 设计模式 单例
单例模式算是设计模式中最容易理解,也是最容易手写代码的模式了吧。但是其中的坑却不少,所以也常作为面试题来考。本文主要对几种单例写法的整理,并分析其优缺点。很多都是一些老生常谈的问题,但如果你不知道如何创建一个线程安全的单例,不知道什么是双检锁,那这篇文章可能会帮助到你。
懒汉式,线程不安全
当被问到要实现一个单例模式时,很多人的第一反应是写出如下的代码,包括教科书上也是这样
- 单例模式
香水浓
java
懒汉 调用getInstance方法时实例化
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static synchronized Singleton getInstance() {
if(null == ins
- 安装Apache问题:系统找不到指定的文件 No installed service named "Apache2"
AdyZhang
apachehttp server
安装Apache问题:系统找不到指定的文件 No installed service named "Apache2"
每次到这一步都很小心防它的端口冲突问题,结果,特意留出来的80端口就是不能用,烦。
解决方法确保几处:
1、停止IIS启动
2、把端口80改成其它 (譬如90,800,,,什么数字都好)
3、防火墙(关掉试试)
在运行处输入 cmd 回车,转到apa
- 如何在android 文件选择器中选择多个图片或者视频?
aijuans
android
我的android app有这样的需求,在进行照片和视频上传的时候,需要一次性的从照片/视频库选择多条进行上传
但是android原生态的sdk中,只能一个一个的进行选择和上传。
我想知道是否有其他的android上传库可以解决这个问题,提供一个多选的功能,可以使checkbox之类的,一次选择多个 处理方法
官方的图片选择器(但是不支持所有版本的androi,只支持API Level
- mysql中查询生日提醒的日期相关的sql
baalwolf
mysql
SELECT sysid,user_name,birthday,listid,userhead_50,CONCAT(YEAR(CURDATE()),DATE_FORMAT(birthday,'-%m-%d')),CURDATE(), dayofyear( CONCAT(YEAR(CURDATE()),DATE_FORMAT(birthday,'-%m-%d')))-dayofyear(
- MongoDB索引文件破坏后导致查询错误的问题
BigBird2012
mongodb
问题描述:
MongoDB在非正常情况下关闭时,可能会导致索引文件破坏,造成数据在更新时没有反映到索引上。
解决方案:
使用脚本,重建MongoDB所有表的索引。
var names = db.getCollectionNames();
for( var i in names ){
var name = names[i];
print(name);
- Javascript Promise
bijian1013
JavaScriptPromise
Parse JavaScript SDK现在提供了支持大多数异步方法的兼容jquery的Promises模式,那么这意味着什么呢,读完下文你就了解了。
一.认识Promises
“Promises”代表着在javascript程序里下一个伟大的范式,但是理解他们为什么如此伟大不是件简
- [Zookeeper学习笔记九]Zookeeper源代码分析之Zookeeper构造过程
bit1129
zookeeper
Zookeeper重载了几个构造函数,其中构造者可以提供参数最多,可定制性最多的构造函数是
public ZooKeeper(String connectString, int sessionTimeout, Watcher watcher, long sessionId, byte[] sessionPasswd, boolea
- 【Java命令三】jstack
bit1129
jstack
jstack是用于获得当前运行的Java程序所有的线程的运行情况(thread dump),不同于jmap用于获得memory dump
[hadoop@hadoop sbin]$ jstack
Usage:
jstack [-l] <pid>
(to connect to running process)
jstack -F
- jboss 5.1启停脚本 动静分离部署
ronin47
以前启动jboss,往各种xml配置文件,现只要运行一句脚本即可。start nohup sh /**/run.sh -c servicename -b ip -g clustername -u broatcast jboss.messaging.ServerPeerID=int -Djboss.service.binding.set=p
- UI之如何打磨设计能力?
brotherlamp
UIui教程ui自学ui资料ui视频
在越来越拥挤的初创企业世界里,视觉设计的重要性往往可以与杀手级用户体验比肩。在许多情况下,尤其对于 Web 初创企业而言,这两者都是不可或缺的。前不久我们在《右脑革命:别学编程了,学艺术吧》中也曾发出过重视设计的呼吁。如何才能提高初创企业的设计能力呢?以下是 9 位创始人的体会。
1.找到自己的方式
如果你是设计师,要想提高技能可以去设计博客和展示好设计的网站如D-lists或
- 三色旗算法
bylijinnan
java算法
import java.util.Arrays;
/**
问题:
假设有一条绳子,上面有红、白、蓝三种颜色的旗子,起初绳子上的旗子颜色并没有顺序,
您希望将之分类,并排列为蓝、白、红的顺序,要如何移动次数才会最少,注意您只能在绳
子上进行这个动作,而且一次只能调换两个旗子。
网上的解法大多类似:
在一条绳子上移动,在程式中也就意味只能使用一个阵列,而不使用其它的阵列来
- 警告:No configuration found for the specified action: \'s
chiangfai
configuration
1.index.jsp页面form标签未指定namespace属性。
<!--index.jsp代码-->
<%@taglib prefix="s" uri="/struts-tags"%>
...
<s:form action="submit" method="post"&g
- redis -- hash_max_zipmap_entries设置过大有问题
chenchao051
redishash
使用redis时为了使用hash追求更高的内存使用率,我们一般都用hash结构,并且有时候会把hash_max_zipmap_entries这个值设置的很大,很多资料也推荐设置到1000,默认设置为了512,但是这里有个坑
#define ZIPMAP_BIGLEN 254
#define ZIPMAP_END 255
/* Return th
- select into outfile access deny问题
daizj
mysqltxt导出数据到文件
本文转自:http://hatemysql.com/2010/06/29/select-into-outfile-access-deny%E9%97%AE%E9%A2%98/
为应用建立了rnd的帐号,专门为他们查询线上数据库用的,当然,只有他们上了生产网络以后才能连上数据库,安全方面我们还是很注意的,呵呵。
授权的语句如下:
grant select on armory.* to rn
- phpexcel导出excel表简单入门示例
dcj3sjt126com
PHPExcelphpexcel
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
if (PHP_SAPI == 'cli')
die('This example should only be run from a Web Brows
- 美国电影超短200句
dcj3sjt126com
电影
1. I see. 我明白了。2. I quit! 我不干了!3. Let go! 放手!4. Me too. 我也是。5. My god! 天哪!6. No way! 不行!7. Come on. 来吧(赶快)8. Hold on. 等一等。9. I agree。 我同意。10. Not bad. 还不错。11. Not yet. 还没。12. See you. 再见。13. Shut up!
- Java访问远程服务
dyy_gusi
httpclientwebservicegetpost
随着webService的崛起,我们开始中会越来越多的使用到访问远程webService服务。当然对于不同的webService框架一般都有自己的client包供使用,但是如果使用webService框架自己的client包,那么必然需要在自己的代码中引入它的包,如果同时调运了多个不同框架的webService,那么就需要同时引入多个不同的clien
- Maven的settings.xml配置
geeksun
settings.xml
settings.xml是Maven的配置文件,下面解释一下其中的配置含义:
settings.xml存在于两个地方:
1.安装的地方:$M2_HOME/conf/settings.xml
2.用户的目录:${user.home}/.m2/settings.xml
前者又被叫做全局配置,后者被称为用户配置。如果两者都存在,它们的内容将被合并,并且用户范围的settings.xml优先。
- ubuntu的init与系统服务设置
hongtoushizi
ubuntu
转载自:
http://iysm.net/?p=178 init
Init是位于/sbin/init的一个程序,它是在linux下,在系统启动过程中,初始化所有的设备驱动程序和数据结构等之后,由内核启动的一个用户级程序,并由此init程序进而完成系统的启动过程。
ubuntu与传统的linux略有不同,使用upstart完成系统的启动,但表面上仍维持init程序的形式。
运行
- 跟我学Nginx+Lua开发目录贴
jinnianshilongnian
nginxlua
使用Nginx+Lua开发近一年的时间,学习和实践了一些Nginx+Lua开发的架构,为了让更多人使用Nginx+Lua架构开发,利用春节期间总结了一份基本的学习教程,希望对大家有用。也欢迎谈探讨学习一些经验。
目录
第一章 安装Nginx+Lua开发环境
第二章 Nginx+Lua开发入门
第三章 Redis/SSDB+Twemproxy安装与使用
第四章 L
- php位运算符注意事项
home198979
位运算PHP&
$a = $b = $c = 0;
$a & $b = 1;
$b | $c = 1
问a,b,c最终为多少?
当看到这题时,我犯了一个低级错误,误 以为位运算符会改变变量的值。所以得出结果是1 1 0
但是位运算符是不会改变变量的值的,例如:
$a=1;$b=2;
$a&$b;
这样a,b的值不会有任何改变
- Linux shell数组建立和使用技巧
pda158
linux
1.数组定义 [chengmo@centos5 ~]$ a=(1 2 3 4 5) [chengmo@centos5 ~]$ echo $a 1 一对括号表示是数组,数组元素用“空格”符号分割开。
2.数组读取与赋值 得到长度: [chengmo@centos5 ~]$ echo ${#a[@]} 5 用${#数组名[@或
- hotspot源码(JDK7)
ol_beta
javaHotSpotjvm
源码结构图,方便理解:
├─agent Serviceab
- Oracle基本事务和ForAll执行批量DML练习
vipbooks
oraclesql
基本事务的使用:
从账户一的余额中转100到账户二的余额中去,如果账户二不存在或账户一中的余额不足100则整笔交易回滚
select * from account;
-- 创建一张账户表
create table account(
-- 账户ID
id number(3) not null,
-- 账户名称
nam
评论
Saito
2010-08-22
write more, bug more..
do less,user more..
do more,user less..
花花公子
2010-08-22
花花公子
2010-08-21
“Less is More"则是一位西班牙建筑师提倡的”极简主义“,程序代码写的少确实能带来美感,可是用户只会关心产品的功能。