linux系统下使用snmpset命令始终报错,,,

[root@localhost 桌面]# snmpset -v2c -c public -On localhost system.sysName.0 s linux
Error in packet.
Reason: noAccess
Failed object: .1.3.6.1.2.1.1.5.0
始终处于这个错误,请各路大神帮帮我,感激不尽,,,,我的conmpd.conf文件是:
###############################################################################
#

snmpd.conf:

An example configuration file for configuring the ucd-snmp snmpd agent.

#
###############################################################################
#

This file is intended to only be as a starting point. Many more

configuration directives exist than are mentioned in this file. For

full details, see the snmpd.conf(5) manual page.

#

All lines beginning with a '#' are comments and are intended for you

to read. All other lines are configuration commands for the agent.

###############################################################################

Access Control

###############################################################################

As shipped, the snmpd demon will only respond to queries on the

system mib group until this file is replaced or modified for

security purposes. Examples are shown below about how to increase the

level of access.

By far, the most common question I get about the agent is "why won't

it work?", when really it should be "how do I configure the agent to

allow me to access it?"

#

By default, the agent responds to the "public" community for read

only access, if run out of the box without any configuration file in

place. The following examples show you other ways of configuring

the agent so that you can change the community names, and give

yourself write access to the mib tree as well.

#

For more information, read the FAQ as well as the snmpd.conf(5)

manual page.

####

First, map the community name "public" into a "security name"

sec.name source community

com2sec notConfigUser default public

####

Second, map the security name into a group name:

groupName securityModel securityName

group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser

####

Third, create a view for us to let the group have rights to:

Make at least snmpwalk -v 1 localhost -c public system fast again.

name incl/excl subtree mask(optional)

view systemview included .1
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1

####

Finally, grant the group read-only access to the systemview view.

group context sec.model sec.level prefix read write notif

access notConfigGroup "" any noauth exact systemview none none

-----------------------------------------------------------------------------

Here is a commented out example configuration that allows less

restrictive access.

YOU SHOULD CHANGE THE "COMMUNITY" TOKEN BELOW TO A NEW KEYWORD ONLY

KNOWN AT YOUR SITE. YOU MUST CHANGE THE NETWORK TOKEN BELOW TO

SOMETHING REFLECTING YOUR LOCAL NETWORK ADDRESS SPACE.

sec.name source community

#com2sec local localhost COMMUNITY
#com2sec mynetwork NETWORK/24 COMMUNITY

group.name sec.model sec.name

#group MyRWGroup any local
#group MyROGroup any mynetwork
#
#group MyRWGroup any otherv3user
#...

incl/excl subtree mask

#view all included .1 80

-or just the mib2 tree-

#view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc

context sec.model sec.level prefix read write notif

#access MyROGroup "" any noauth 0 all none none
#access MyRWGroup "" any noauth 0 all all all

###############################################################################

Sample configuration to make net-snmpd RFC 1213.

Unfortunately v1 and v2c don't allow any user based authentification, so

opening up the default config is not an option from a security point.

#

WARNING: If you uncomment the following lines you allow write access to your

snmpd daemon from any source! To avoid this use different names for your

community or split out the write access to a different community and

restrict it to your local network.

Also remember to comment the syslocation and syscontact parameters later as

otherwise they are still read only (see FAQ for net-snmp).

#

First, map the community name "public" into a "security name"

sec.name source community

#com2sec notConfigUser default public

Second, map the security name into a group name:

groupName securityModel securityName

#group notConfigGroup v1 notConfigUser
#group notConfigGroup v2c notConfigUser

Third, create a view for us to let the group have rights to:

Open up the whole tree for ro, make the RFC 1213 required ones rw.

name incl/excl subtree mask(optional)

#view roview included .1
#view rwview included system.sysContact
#view rwview included system.sysName
#view rwview included system.sysLocation
#view rwview included interfaces.ifTable.ifEntry.ifAdminStatus
#view rwview included at.atTable.atEntry.atPhysAddress
#view rwview included at.atTable.atEntry.atNetAddress
#view rwview included ip.ipForwarding
#view rwview included ip.ipDefaultTTL
#view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteDest
#view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteIfIndex
#view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteMetric1
#view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteMetric2
#view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteMetric3
#view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteMetric4
#view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteType
#view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteAge
#view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteMask
#view rwview included ip.ipRouteTable.ipRouteEntry.ipRouteMetric5
#view rwview included ip.ipNetToMediaTable.ipNetToMediaEntry.ipNetToMediaIfIndex
#view rwview included ip.ipNetToMediaTable.ipNetToMediaEntry.ipNetToMediaPhysAddress
#view rwview included ip.ipNetToMediaTable.ipNetToMediaEntry.ipNetToMediaNetAddress
#view rwview included ip.ipNetToMediaTable.ipNetToMediaEntry.ipNetToMediaType
#view rwview included tcp.tcpConnTable.tcpConnEntry.tcpConnState
#view rwview included egp.egpNeighTable.egpNeighEntry.egpNeighEventTrigger
#view rwview included snmp.snmpEnableAuthenTraps

Finally, grant the group read-only access to the systemview view.

group context sec.model sec.level prefix read write notif

#access notConfigGroup "" any noauth exact roview rwview none

###############################################################################

System contact information

#

It is also possible to set the sysContact and sysLocation system

variables through the snmpd.conf file:

syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root root@localhost (configure /etc/snmp/snmp.local.conf)

Example output of snmpwalk:

% snmpwalk -v 1 localhost -c public system

system.sysDescr.0 = "SunOS name sun4c"

system.sysObjectID.0 = OID: enterprises.ucdavis.ucdSnmpAgent.sunos4

system.sysUpTime.0 = Timeticks: (595637548) 68 days, 22:32:55

system.sysContact.0 = "Me me@somewhere.org"

system.sysName.0 = "name"

system.sysLocation.0 = "Right here, right now."

system.sysServices.0 = 72

###############################################################################

Logging

#

We do not want annoying "Connection from UDP: " messages in syslog.

If the following option is commented out, snmpd will print each incoming

connection, which can be useful for debugging.

dontLogTCPWrappersConnects yes

-----------------------------------------------------------------------------

###############################################################################

Process checks.

#

The following are examples of how to use the agent to check for

processes running on the host. The syntax looks something like:

#

proc NAME [MAX=0] [MIN=0]

#

NAME: the name of the process to check for. It must match

exactly (ie, http will not find httpd processes).

MAX: the maximum number allowed to be running. Defaults to 0.

MIN: the minimum number to be running. Defaults to 0.

#

Examples (commented out by default):

#

Make sure mountd is running

proc mountd

Make sure there are no more than 4 ntalkds running, but 0 is ok too.

proc ntalkd 4

Make sure at least one sendmail, but less than or equal to 10 are running.

proc sendmail 10 1

A snmpwalk of the process mib tree would look something like this:

% snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.2

enterprises.ucdavis.procTable.prEntry.prIndex.1 = 1

enterprises.ucdavis.procTable.prEntry.prIndex.2 = 2

enterprises.ucdavis.procTable.prEntry.prIndex.3 = 3

enterprises.ucdavis.procTable.prEntry.prNames.1 = "mountd"

enterprises.ucdavis.procTable.prEntry.prNames.2 = "ntalkd"

enterprises.ucdavis.procTable.prEntry.prNames.3 = "sendmail"

enterprises.ucdavis.procTable.prEntry.prMin.1 = 0

enterprises.ucdavis.procTable.prEntry.prMin.2 = 0

enterprises.ucdavis.procTable.prEntry.prMin.3 = 1

enterprises.ucdavis.procTable.prEntry.prMax.1 = 0

enterprises.ucdavis.procTable.prEntry.prMax.2 = 4

enterprises.ucdavis.procTable.prEntry.prMax.3 = 10

enterprises.ucdavis.procTable.prEntry.prCount.1 = 0

enterprises.ucdavis.procTable.prEntry.prCount.2 = 0

enterprises.ucdavis.procTable.prEntry.prCount.3 = 1

enterprises.ucdavis.procTable.prEntry.prErrorFlag.1 = 1

enterprises.ucdavis.procTable.prEntry.prErrorFlag.2 = 0

enterprises.ucdavis.procTable.prEntry.prErrorFlag.3 = 0

enterprises.ucdavis.procTable.prEntry.prErrMessage.1 = "No mountd process running."

enterprises.ucdavis.procTable.prEntry.prErrMessage.2 = ""

enterprises.ucdavis.procTable.prEntry.prErrMessage.3 = ""

enterprises.ucdavis.procTable.prEntry.prErrFix.1 = 0

enterprises.ucdavis.procTable.prEntry.prErrFix.2 = 0

enterprises.ucdavis.procTable.prEntry.prErrFix.3 = 0

#

Note that the errorFlag for mountd is set to 1 because one is not

running (in this case an rpc.mountd is, but thats not good enough),

and the ErrMessage tells you what's wrong. The configuration

imposed in the snmpd.conf file is also shown.

Special Case: When the min and max numbers are both 0, it assumes

you want a max of infinity and a min of 1.

#

-----------------------------------------------------------------------------

###############################################################################

Executables/scripts

#

#

You can also have programs run by the agent that return a single

line of output and an exit code. Here are two examples.

#

exec NAME PROGRAM [ARGS ...]

#

NAME: A generic name. The name must be unique for each exec statement.

PROGRAM: The program to run. Include the path!

ARGS: optional arguments to be passed to the program

a simple hello world

exec echotest /bin/echo hello world

Run a shell script containing:

#

#!/bin/sh

echo hello world

echo hi there

exit 35

#

Note: this has been specifically commented out to prevent

accidental security holes due to someone else on your system writing

a /tmp/shtest before you do. Uncomment to use it.

#
#exec shelltest /bin/sh /tmp/shtest

Then,

% snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.8

enterprises.ucdavis.extTable.extEntry.extIndex.1 = 1

enterprises.ucdavis.extTable.extEntry.extIndex.2 = 2

enterprises.ucdavis.extTable.extEntry.extNames.1 = "echotest"

enterprises.ucdavis.extTable.extEntry.extNames.2 = "shelltest"

enterprises.ucdavis.extTable.extEntry.extCommand.1 = "/bin/echo hello world"

enterprises.ucdavis.extTable.extEntry.extCommand.2 = "/bin/sh /tmp/shtest"

enterprises.ucdavis.extTable.extEntry.extResult.1 = 0

enterprises.ucdavis.extTable.extEntry.extResult.2 = 35

enterprises.ucdavis.extTable.extEntry.extOutput.1 = "hello world."

enterprises.ucdavis.extTable.extEntry.extOutput.2 = "hello world."

enterprises.ucdavis.extTable.extEntry.extErrFix.1 = 0

enterprises.ucdavis.extTable.extEntry.extErrFix.2 = 0

Note that the second line of the /tmp/shtest shell script is cut

off. Also note that the exit status of 35 was returned.

-----------------------------------------------------------------------------

###############################################################################

disk checks

#

The agent can check the amount of available disk space, and make

sure it is above a set limit.

disk PATH [MIN=100000]

#

PATH: mount path to the disk in question.

MIN: Disks with space below this value will have the Mib's errorFlag set.

Default value = 100000.

Check the / partition and make sure it contains at least 10 megs.

disk / 10000

% snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.9

enterprises.ucdavis.diskTable.dskEntry.diskIndex.1 = 0

enterprises.ucdavis.diskTable.dskEntry.diskPath.1 = "/" Hex: 2F

enterprises.ucdavis.diskTable.dskEntry.diskDevice.1 = "/dev/dsk/c201d6s0"

enterprises.ucdavis.diskTable.dskEntry.diskMinimum.1 = 10000

enterprises.ucdavis.diskTable.dskEntry.diskTotal.1 = 837130

enterprises.ucdavis.diskTable.dskEntry.diskAvail.1 = 316325

enterprises.ucdavis.diskTable.dskEntry.diskUsed.1 = 437092

enterprises.ucdavis.diskTable.dskEntry.diskPercent.1 = 58

enterprises.ucdavis.diskTable.dskEntry.diskErrorFlag.1 = 0

enterprises.ucdavis.diskTable.dskEntry.diskErrorMsg.1 = ""

-----------------------------------------------------------------------------

###############################################################################

load average checks

#

load [1MAX=12.0] [5MAX=12.0] [15MAX=12.0]

#

1MAX: If the 1 minute load average is above this limit at query

time, the errorFlag will be set.

5MAX: Similar, but for 5 min average.

15MAX: Similar, but for 15 min average.

Check for loads:

load 12 14 14

% snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.10

enterprises.ucdavis.loadTable.laEntry.loadaveIndex.1 = 1

enterprises.ucdavis.loadTable.laEntry.loadaveIndex.2 = 2

enterprises.ucdavis.loadTable.laEntry.loadaveIndex.3 = 3

enterprises.ucdavis.loadTable.laEntry.loadaveNames.1 = "Load-1"

enterprises.ucdavis.loadTable.laEntry.loadaveNames.2 = "Load-5"

enterprises.ucdavis.loadTable.laEntry.loadaveNames.3 = "Load-15"

enterprises.ucdavis.loadTable.laEntry.loadaveLoad.1 = "0.49" Hex: 30 2E 34 39

enterprises.ucdavis.loadTable.laEntry.loadaveLoad.2 = "0.31" Hex: 30 2E 33 31

enterprises.ucdavis.loadTable.laEntry.loadaveLoad.3 = "0.26" Hex: 30 2E 32 36

enterprises.ucdavis.loadTable.laEntry.loadaveConfig.1 = "12.00"

enterprises.ucdavis.loadTable.laEntry.loadaveConfig.2 = "14.00"

enterprises.ucdavis.loadTable.laEntry.loadaveConfig.3 = "14.00"

enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.1 = 0

enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.2 = 0

enterprises.ucdavis.loadTable.laEntry.loadaveErrorFlag.3 = 0

enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.1 = ""

enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.2 = ""

enterprises.ucdavis.loadTable.laEntry.loadaveErrMessage.3 = ""

-----------------------------------------------------------------------------

###############################################################################

Extensible sections.

This alleviates the multiple line output problem found in the

previous executable mib by placing each mib in its own mib table:

Run a shell script containing:

#

#!/bin/sh

echo hello world

echo hi there

exit 35

#

Note: this has been specifically commented out to prevent

accidental security holes due to someone else on your system writing

a /tmp/shtest before you do. Uncomment to use it.

#

exec .1.3.6.1.4.1.2021.50 shelltest /bin/sh /tmp/shtest

% snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.50

enterprises.ucdavis.50.1.1 = 1

enterprises.ucdavis.50.2.1 = "shelltest"

enterprises.ucdavis.50.3.1 = "/bin/sh /tmp/shtest"

enterprises.ucdavis.50.100.1 = 35

enterprises.ucdavis.50.101.1 = "hello world."

enterprises.ucdavis.50.101.2 = "hi there."

enterprises.ucdavis.50.102.1 = 0

Now the Output has grown to two lines, and we can see the 'hi

there.' output as the second line from our shell script.

#

Note that you must alter the mib.txt file to be correct if you want

the .50.* outputs above to change to reasonable text descriptions.

Other ideas:

exec .1.3.6.1.4.1.2021.51 ps /bin/ps

exec .1.3.6.1.4.1.2021.52 top /usr/local/bin/top

exec .1.3.6.1.4.1.2021.53 mailq /usr/bin/mailq

-----------------------------------------------------------------------------

###############################################################################

Pass through control.

Usage:

pass MIBOID EXEC-COMMAND

#

This will pass total control of the mib underneath the MIBOID

portion of the mib to the EXEC-COMMAND.

#

Note: You'll have to change the path of the passtest script to your

source directory or install it in the given location.

Example: (see the script for details)

(commented out here since it requires that you place the

script in the right location. (its not installed by default))

pass .1.3.6.1.4.1.2021.255 /bin/sh /usr/local/local/passtest

% snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.255

enterprises.ucdavis.255.1 = "life the universe and everything"

enterprises.ucdavis.255.2.1 = 42

enterprises.ucdavis.255.2.2 = OID: 42.42.42

enterprises.ucdavis.255.3 = Timeticks: (363136200) 42 days, 0:42:42

enterprises.ucdavis.255.4 = IpAddress: 127.0.0.1

enterprises.ucdavis.255.5 = 42

enterprises.ucdavis.255.6 = Gauge: 42

#

% snmpget -v 1 localhost public .1.3.6.1.4.1.2021.255.5

enterprises.ucdavis.255.5 = 42

#

% snmpset -v 1 localhost public .1.3.6.1.4.1.2021.255.1 s "New string"

enterprises.ucdavis.255.1 = "New string"

#

For specific usage information, see the man/snmpd.conf.5 manual page

as well as the local/passtest script used in the above example.

###############################################################################

Further Information

#

See the snmpd.conf manual page, and the output of "snmpd -H".

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
snmpset 一直跑出 Reason: noAccess 怎麼辦?
小弟目前在cyclone v 架設 snmp 在測試snmpset時一直發生以下錯誤: Error in packet. Reason: noAccess Failed object: Test-MIB::GetTime.0 上網查了之後覺得是權限問題,所以修改了snmpd.conf 如下 ![图片说明](https://img-ask.csdn.net/upload/201905/06/1557135394_77198.png) 應該要能寫入了但仍然不行 附上程式碼: #include <net-snmp/net-snmp-config.h> #include <net-snmp/net-snmp-includes.h> #include <net-snmp/agent/net-snmp-agent-includes.h> #include "Test.h" #include <stdio.h> #include <time.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <time.h> /** Initializes the Test module */ void init_Test(void) { const oid GetTime_oid[] = { 1, 3, 6, 1, 4, 1, 16535, 1, 1 }; DEBUGMSGTL(("Test", "Initializing\n")); netsnmp_register_scalar(netsnmp_create_handler_registration ("GetTime", handle_GetTime, GetTime_oid, OID_LENGTH(GetTime_oid), HANDLER_CAN_RONLY)); } int handle_GetTime(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests) { int ret; int id = 219; switch (reqinfo->mode) { case MODE_GET: snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,(u_char *) &id /* XXX: a pointer to the scalar's data */ , sizeof(id) /* * XXX: the length of the data in bytes */ ); break; case MODE_SET_RESERVE1: ret = netsnmp_check_vb_type(requests->requestvb, ASN_OCTET_STR); if ( ret != SNMP_ERR_NOERROR ) { netsnmp_set_request_error(reqinfo, requests, ret ); } break; case MODE_SET_FREE: /* XXX: free resources allocated in RESERVE1 and/or RESERVE2. Something failed somewhere, and the states below won't be called. */ break; case MODE_SET_ACTION: id = *requests->requestvb->val.integer; break; default: /* * we should never get here, so this is a really bad error */ snmp_log(LOG_ERR, "unknown mode (%d) in handle_GetTime\n", reqinfo->mode); return SNMP_ERR_GENERR; } return SNMP_ERR_NOERROR; } ...麻煩各位幫我看一下了…萬分感謝~
net-snmp中通过subagent方法,如何把多个Table编译成一个可执行文件?
net-snmp中生成了多个XXX_Table.c和 XXX_Table.h的文件,这些代码都已经写好了。现在通过subagent的方法,想把这些表编译到一个文件来执行(运行该可执行几个Table表都能处理),我按照网上的方法: ``` #include <net-snmp/net-snmp-config.h> #include <net-snmp/net-snmp-includes.h> #include <net-snmp/agent/net-snmp-agent-includes.h> #include <signal.h> #include <nstAgentSubagentObject.h> static int keep_running; RETSIGTYPE stop_server(int a) { keep_running = 0; } int main (int argc, char **argv) { int agentx_subagent=1; /* change this if you want to be a SNMP master agent */ int background = 0; /* change this if you want to run in the background */ int syslog = 0; /* change this if you want to use syslog */ /* print log errors to syslog or stderr */ if (syslog) snmp_enable_calllog(); else snmp_enable_stderrlog(); /* we're an agentx subagent? */ if (agentx_subagent) { /* make us a agentx client. */ netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1); } /* run in background, if requested */ if (background && netsnmp_daemonize(1, !syslog)) exit(1); /* initialize tcpip, if necessary */ SOCK_STARTUP; /* initialize the agent library */ init_agent("example-demon"); /* initialize mib code here */ /* mib code: init_nstAgentSubagentObject from nstAgentSubagentObject.C */ init_nstAgentSubagentObject(); /* initialize vacm/usm access control */ if (!agentx_subagent) { init_vacm_vars(); init_usmUser(); } /* example-demon will be used to read example-demon.conf files. */ init_snmp("example-demon"); /* If we're going to be a snmp master agent, initial the ports */ if (!agentx_subagent) init_master_agent(); /* open the port to listen on (defaults to udp:161) */ /* In case we recevie a request to stop (kill -TERM or kill -INT) */ keep_running = 1; signal(SIGTERM, stop_server); signal(SIGINT, stop_server); snmp_log(LOG_INFO,"example-demon is up and running.\n"); /* your main loop here... */ while(keep_running) { /* if you use select(), see snmp_select_info() in snmp_api(3) */ /* --- OR --- */ agent_check_and_process(1); /* 0 == don't block */ } /* at shutdown time */ snmp_shutdown("example-demon"); SOCK_CLEANUP; return 0; } 我通过init_agent("XXX1_table"); init_agent("XXX2_table"); ......init_agent("XXX7_table"); 这种方式编译不行。 打印: ignoring extra call to init_agent (2) ignoring extra call to init_agent (3) ignoring extra call to init_agent (4) ignoring extra call to init_agent (5) ignoring extra call to init_agent (6) ignoring extra call to init_agent (7) ``` 我通过snmpset试了下,只能运行XXX1_table,后面的一个都不行。 不知道用什么方法来实现?我还需要存储其他一些额外的数据信息,所以没有使用静态或者动态的方法。 请高手指导下,谢谢!
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体
小白如何学习java?
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
羞,Java 字符串拼接竟然有这么多姿势
二哥,我今年大二,看你分享的《阿里巴巴 Java 开发手册》上有一段内容说:“循环体内,拼接字符串最好使用 StringBuilder 的 append 方法,而不是 + 号操作符。”到底为什么啊,我平常一直就用的‘+’号操作符啊!二哥有空的时候能否写一篇文章分析一下呢? 就在昨天,一位叫小菜的读者微信我说了上面这段话。 我当时看到这条微信的第一感觉是:小菜你也太菜了吧,这都不知道为啥啊!我估
"狗屁不通文章生成器"登顶GitHub热榜,分分钟写出万字形式主义大作
GitHub 被誉为全球最大的同性交友网站,……,陪伴我们已经走过 10+ 年时间,它托管了大量的软件代码,同时也承载了程序员无尽的欢乐。 万字申请,废话报告,魔幻形式主义大作怎么写?兄dei,狗屁不通文章生成器了解一下。这个富有灵魂的项目名吸引了众人的目光。项目仅仅诞生一周,便冲上了GitHub趋势榜榜首(Js中文网 -前端进阶资源教程)、是榜首哦
推荐几款比较实用的工具,网站
1.盘百度PanDownload   这个云盘工具是免费的,可以进行资源搜索,提速(偶尔会抽风......) 不要去某站买付费的......   PanDownload下载地址   2.BeJSON 这是一款拥有各种在线工具的网站,推荐它的主要原因是网站简洁,功能齐全,广告相比其他广告好太多了     bejson网站   3.二维码美化 这个网站的二维码美化很好看,网站界面
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车?某胡同口的煎饼摊一年能卖出多少个煎饼?深圳有多少个产品经理?一辆公交车里能装下多少个乒乓球?一个正常成年人有多少根头发?这类估算问题,被称为费米问题,是以科学家费米命名的。为什么面试会问这种问题呢?这类问题能把两类人清楚地区分出来。一类是具有文科思维的人,擅长赞叹和模糊想象,它主要依靠的是人的第一反应和直觉,比如小孩...
碎片化的时代,如何学习
今天周末,和大家聊聊学习这件事情。 在如今这个社会,我们的时间被各类 APP 撕的粉碎。 刷知乎、刷微博、刷朋友圈; 看论坛、看博客、看公号; 等等形形色色的信息和知识获取方式一个都不错过。 貌似学了很多,但是却感觉没什么用。 要解决上面这些问题,首先要分清楚一点,什么是信息,什么是知识。 那什么是信息呢? 你一切听到的、看到的,都是信息,比如微博上的明星出轨、微信中的表情大战、抖音上的段子
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。 背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法 不过,当我看了源代码之后 这程序不到50行 尽管我有多年的Python经验,但我竟然一时也没有看懂 当然啦,原作者也说了,这个代码也是在无聊中诞生的,平时撸码是不写中文变量名的, 中文...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
基础拾遗:除了&和&&的区别,你还要知道位运算的这5个运算符
&和&&都可作逻辑与的运算符,表示逻辑与(and),&是位运算符,你还需要知道这5个位运算符,基础很重要,云运算其实很骚!
MySQL数据库总结
一、数据库简介 数据库(Database,DB)是按照数据结构来组织,存储和管理数据的仓库。 典型特征:数据的结构化、数据间的共享、减少数据的冗余度,数据的独立性。 关系型数据库:使用关系模型把数据组织到数据表(table)中。现实世界可以用数据来描述。 主流的关系型数据库产品:Oracle(Oracle)、DB2(IBM)、SQL Server(MS)、MySQL(Oracle)。 数据表:数...
记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背
有一次面试的时候,被问到进程之间有哪些通信方式,不过由于之前没深入思考且整理过,说的并不好。想必大家也都知道进程有哪些通信方式,可是我猜很多人都是靠着”背“来记忆的,所以今天的这篇文章,讲给大家详细着讲解他们是如何通信的,让大家尽量能够理解他们之间的区别、优缺点等,这样的话,以后面试官让你举例子,你也能够顺手拈来。 1、管道 我们来看一条 Linux 的语句 netstat -tulnp | gr...
20行Python代码爬取王者荣耀全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片...
程序设计的5个底层逻辑,决定你能走多快
阿里妹导读:肉眼看计算机是由CPU、内存、显示器这些硬件设备组成,但大部分人从事的是软件开发工作。计算机底层原理就是连通硬件和软件的桥梁,理解计算机底层原理才能在程序设计这条路上越走越快,越走越轻松。从操作系统层面去理解高级编程语言的执行过程,会发现好多软件设计都是同一种套路,很多语言特性都依赖于底层机制,今天董鹏为你一一揭秘。 结合 CPU 理解一行 Java 代码是怎么执行的 根据冯·诺...
张小龙-年薪近3亿的微信之父,他是如何做到的?
张小龙生于湖南邵东魏家桥镇, 家庭主要特点:穷。 不仅自己穷,亲戚也都很穷,可以说穷以类聚。爷爷做过铜匠,总的来说,标准的劳动阶级出身。 家有兄弟两人, 一个小龙,一个小虎。 小虎好动,与邻里打成一片, 小龙好静,喜好读书。 “文静的像个妹子。”张小龙的表哥如是说。 穷文富武,做个读书郎是个不错的选择。 87年至94年, 华中科技大学本硕连读。 本科就读电信系, 不喜欢上课...
阿里靠什么武功秘籍渡过“双十一“的天量冲击
双十一大概会产生多大的数据量呢,可能大家没概念,举个例子央视拍了这么多年电视新闻节目,几十年下来他存了大概80P的数据。而今年双11一天,阿里要处理970P的数据,做为一个IT人,笔者认为今年”双十一“阿里最大的技术看点有有以下两个: 阿里的数据库,也就是刚刚拿下TPC冠军的OcceanBase,处理峰值也达到了骇人听闻的6100万次/秒, 阿里核心系统百分百上云了。 如果把信息系统比做一个武...
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给袈...
iOS Bug 太多,苹果终于坐不住了!
开源的 Android 和闭源的 iOS,作为用户的你,更偏向哪一个呢? 整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 毋庸置疑,当前移动设备操作系统市场中,Android 和 iOS 作为两大阵营,在相互竞争的同时不断演进。不过一直以来,开源的 Android 吸引了无数的手机厂商涌入其中,为其生态带来了百花齐放的盛景,但和神秘且闭源的 iOS 系统相比,不少网友...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
(经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
今年正式步入了大四,离毕业也只剩半年多的时间,回想一下大学四年,感觉自己走了不少弯路,今天就来分享一下自己大学的学习经历,也希望其他人能不要走我走错的路。 (一)初进校园 刚进入大学的时候自己完全就相信了高中老师的话:“进入大学你们就轻松了”。因此在大一的时候自己学习的激情早就被抛地一干二净,每天不是在寝室里玩游戏就是出门游玩,不过好在自己大学时买的第一台笔记本性能并不是很好,也没让我彻底沉...
2020年大前端发展趋势
迅速发展的前端开发,在每⼀年,都为开发者带来了新的关键词。2019 年已步⼊尾声,2020 年前端发展的关键词⼜将有哪些呢?发展的方向又会是什么呢?参考2019年大前端的发展,不出意外,前端依旧会围绕⼩程序、超级APP、跨端开发、前端⼯程化以及新技术运用等几个方面进行展开(可以参考2019年大前端技术趋势深度解读)。 小程序 在⼩程序⽅⾯,今年仍然是⼩程序突⻜猛进的⼀年,各⼤主流的 App 都上线...
如何安装 IntelliJ IDEA 最新版本——详细教程
IntelliJ IDEA 简称 IDEA,被业界公认为最好的 Java 集成开发工具,尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克,开发人员以严谨著称的东欧程序员为主。IDEA 分为社区版和付费版两个版本。 我呢,一直是 Eclipse 的忠实粉丝,差不多十年的老用户了。很早就接触到了 IDEA...
听说了吗?阿里双11作战室竟1根网线都没有
双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一地狼藉”;到如今媲美5G的wifi网速,到现场却看不到一根网线;从当年使用商用AP(无线路由器),让光明顶双11当天断网一分钟,到全部使用阿里自研AP……阿里巴巴企业智能事业部工程师们提供的基础保障...
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性...
《吐血整理》系列-顶级程序员工具集
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
相关热词 如何提升c#开发能力 矩阵乘法c# c#调用谷歌浏览器 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天
立即提问